【发布时间】:2012-04-04 18:22:06
【问题描述】:
我目前有一个为字体提供服务的纹理,它位于 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 wiki 页面 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)),但这似乎不太优雅。
编辑:澄清一下,我打算让角色纹理保持完全不透明度,只是为了改变颜色叠加。因此,示例应该从全蓝变为全白。
【问题讨论】:
标签: iphone opengl-es colors fonts textures