2017-04-02 133 views
1

我正在制作游戏引擎,最近才将其更新为核心配置文件OpenGL。这样做后,我发现不赞成用于字体纹理的GL_LUMINANCE_ALPHA。用GL_RG代替它后,我的区域应该是红色的,而区域应该是白色的绿色!替换为核心配置文件中的GL_LUMINANCE_ALPHA?

GL_RG result...

当然这不是我想要的!有没有什么办法可以将面具调整到我想要的样子?

回答

2

OK,我找到了答案由刚与调酒屏蔽值打打闹闹,这里是我如何恢复它恢复正常:

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); 

这使得再看看完全正常!

+2

在着色器中这样做会更容易吗? – BDL

+1

@BDL:当然,如果你想为单色纹理编写一个特殊用途着色器代码路径。在纹理对象上设置swizzle蒙版允许着色器重用,并保持特定格式的东西本地化。 – datenwolf