OpenGL ES 1.1字体纹理颜色

时间:2012-03-20 09:28:02

标签: iphone opengl-es colors fonts textures

我目前有一个纹理服务字体,这是在iPhone的OpenGL中最顶层(最后)渲染。纹理是带有透明环绕的白色字形。我的目标是在纹理上叠加另一种颜色,有效地改变字体颜色。

使用下面的代码我可以在纹理上制作纯色,前提是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(...);

我已经在OpenGL维基页面http://www.opengl.org/wiki/Texture_Combiners上尝试了这些建议,标题为“示例:基于tex0的alpha 混合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)),但这似乎不太优雅。

编辑:只是为了澄清,我打算让角色纹理保持完全不透明度,只是为了改变颜色叠加。因此,示例应从全蓝色变为全白色。

1 个答案:

答案 0 :(得分:0)

我认为你必须改变glBlendFunc参数(BTW glBlendFunct中有一个拼写错误)。

看看这个: http://pyopengl.sourceforge.net/documentation/manual/glBlendFunc.3G.html

我将其设置为:

glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

作品。

希望它有所帮助...