2017-04-02 5 views
1

Ich mache eine Game-Engine und habe sie erst kürzlich auf Core-Profil OpenGL aktualisiert. Danach habe ich entdeckt, dass GL_LUMINANCE_ALPHA, das ich für Font-Texturen verwende, veraltet ist. Nachdem ich es mit GL_RG ersetzt habe, habe ich die Bereiche, die alpha-rot sein sollten, und die Fläche, die weiß grün sein sollte!Ersatz für GL_LUMINANCE_ALPHA im Kernprofil?

GL_RG result...

Das ist natürlich nicht das, was ich will! Gibt es irgendeine Möglichkeit, die Maske wieder so zu verblenden, wie ich es möchte?

Antwort

2

OK, fand ich die Antwort von nur um mit den swizzle Maskenwerten täuschen, und hier ist, wie ich es wieder normal zurückgekehrt:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_RED); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, GL_RED); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_GREEN); 

Dies machte es wieder ganz normal aussehen!

+2

Wäre es nicht viel einfacher gewesen, das im Shader zu tun? – BDL

+1

@BDL: Sicher, wenn Sie einen speziellen Shader Code Pfad für monochromatische Texturen schreiben möchten. Das Festlegen einer Swizzle-Maske für das Texturobjekt ermöglicht die Wiederverwendung von Shadern und hält das formatspezifische Material lokalisiert. – datenwolf