2017-07-27 7 views
0

Vom Khronos ref pages:WebGL: speichert ein Single-Channel-Textur-Format tatsächlich (Textur) Speicher?

GL_LUMINANCE: Jedes Element ist ein einzelner Helligkeitswert. Der GL wandelt ihn in einen Fließkommawert um und fügt ihn dann in ein RGBA-Element ein, indem der Luminanzwert dreimal für rot, grün und blau repliziert und 1 für alpha angehängt wird.

Gilt dies auch für WebGL? Wenn ja, bedeutet dies, dass die Verwendung von Texturen, die mit weniger Kanälen wie LUMINANCE formatiert wurden, nicht VRAM im Vergleich zur Verwendung von RGBA speichert?

Und was ist mit RAM?

Antwort

2

Gilt dies auch für WebGL?

Ja, es funktioniert

bedeutet dies bedeuten, dass Texturen formatiert mit weniger Kanälen wie LUMINANZ mit VRAM nicht sparen im Vergleich zu RGBA mit

Nein, während diese Implementierung spezifisch ist (und einige Implementierungen wählen die Daten tatsächlich vor dem Hochladen auf RGBA aus. Die Erweiterung sollte im laufenden Betrieb erfolgen und im Grunde nur einen und denselben Wert für jede Farbkomponente liefern, wenn aus einer solchen Textur innerhalb eines Shaders genommen wird.

Und wie wäre es mit RAM?

Sobald Sie texImage2D rufen die Daten an VRAM hochgeladen und nicht so lange im RAM gehalten, wie Sie dies nicht tun (z. Durch zu einem Bezug der Daten festhalten).

0

GL_LUMINANCE wurde veraltet und in OpenGL 3.2 entfernt. Heutzutage spezifizieren Sie das interne Format explizit mit Enums wie GL_R8. Implementierungen ordnen ihren internen Speicher dem angegebenen Format zu (obwohl diese Garantie in der OpenGL-Spezifikation nicht vorhanden ist, wie in der Als-ob-Regel). Ich empfehle, nicht GL_LUMINANCE in WebGL entweder zu verwenden. Verwenden Sie einfach das explizite interne Format und erweitern Sie es im Shader nach Bedarf oder wenn die Textur wechselt.

+0

Was nur mit WebGL ** 2 ** möglich ist ... –

Verwandte Themen