我目前有一个纹理服务字体,这是在OpenGL的最上面(最后)呈现为iPhone。纹理是带有透明环绕的白色字形。我的目标是在纹理上叠加另一种颜色,有效地改变字体颜色。OpenGL ES 1.1颜色在字体纹理
使用下面的代码,我可以在纹理上做出纯色,只要alpha设置为255即可。我的目标是逐渐淡出颜色,所以我的目标是显示颜色(0,0,255,127) 。这应该是一个部分透明的蓝色。不过,我已经尝试了很多次与glTexEnv()设置,似乎无法使非纯色覆盖。
glBlendFunct(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, fontTexture);
glColorub(0,0,255,255);
...
glDrawElements(...);
我试图在http://www.opengl.org/wiki/Texture_Combiners OpenGL的wiki页面的建议中,的标题下的“范例:混合基于tex0的阿尔法tex0和tex1”。我也尝试了这里发现的想法OpenGL ES 1.1: How to change texture color without losing luminance?。
如果有任何设置,我可以使颜色(0,0,255,127)存在,而不会丢失字体/字符的轮廓?
PS。另一个想法是为前面的例子传递一个预先倍增的alpha颜色(例如(0,0,255 *(127/256),127)),但这看起来不太优雅。
编辑:只是为了澄清,我打算为字符纹理保留完全不透明度,只是为了颜色叠加改变。因此,该示例应该从全蓝变为全白。
感谢您的回答Beppe。不幸的是,这与上述结果类似。如果我尝试(0,0,255,40),整个纹理变得几乎透明。如果可以的话,所需的结果是背景纹理(全255字母),顶部为浅蓝色。因此对于用户来说,颜色是浅蓝色的,但是角色是完全不透明的。 – Overflowed 2012-03-21 05:01:02
嗯......我仍然认为你应该通过glBlendFunc来实现你的目标。您是否尝试过与其他可能的参数一起玩耍? – Beppe 2012-03-21 10:13:39