替换核心配置文件中的 GL_LUMINANCE_ALPHA?

3 opengl macos

我正在制作一个游戏引擎,最近才将其更新为核心配置文件 OpenGL。这样做之后,我发现我用于字体纹理的 GL_LUMINANCE_ALPHA 已被弃用。用 GL_RG 替换它后,我有应该是 alpha 红色的区域,以及应该是白绿色的区域!

GL_RG 结果...

这当然不是我想要的!有什么办法可以把这个面具调回我想要的样子吗?

小智 5

好的,我只是通过摆弄 swizzle 掩码值找到了答案,这是我将其恢复正常的方法:

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);
Run Code Online (Sandbox Code Playgroud)

这使它再次看起来完全正常!

  • 在着色器中这样做不是更容易吗? (3认同)
  • @BDL:当然,如果您想为单色纹理编写特殊用途的着色器代码路径。在纹理对象上设置 swizzle 蒙版允许着色器重用并保持格式特定的东西本地化。 (2认同)