2017-07-17 1 views
3

Zum Beispiel habe ich schreibe dies in Code:Wie wird es sein, wenn ich in glTexImage2D ein anderes internes Format wähle, wie ich es im Shader probiere?

glTexImage2D(GL_TEXTURE_2D, i, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data); 

und Shader:

glFragColor = texture2D(sampler, uv).rgba 

was passieren wird, ist die offizielle Definition für diese Situation dort?

+0

Der Gerätetreiber konvertiert das Format trotzdem in das interne Format. Deshalb ist es optimal, das gleiche Format wie intern zu verwenden, also muss nichts konvertiert werden. –

Antwort

3

Die Image Format Spezifikation der Khronos-Gruppe, sagt:

Bildformate müssen die einzelnen Komponenten nicht speichern. Wenn der Shader eine solche Textur abtastet, wird er immer noch in einen 4-Wert-RGBA-Vektor aufgelöst. Die Komponenten, die nicht im Bildformat gespeichert sind, werden automatisch in gefüllt. Zeros verwendet werden, wenn R, G oder B fehlt, während ein fehlt Alpha löst sich immer auf 1.

Hinweis: Texture Swizzling können, was sind die fehlenden Werte ändern.

+0

Das ist genau was ich will, danke! –

Verwandte Themen