Opengl:仅使用纹理为有色对象提供alpha通道

时间:2010-06-11 02:16:03

标签: opengl textures alphablending

我是OpenGL的新手,我无法知道如何做到这一点:
我想渲染一个字母并且能够改变它的颜色,所以我在透明背景上有一个带有字母的纹理。我设法使用此代码渲染它:

glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)  

但是这会将字母呈黑色,因为它在纹理上。如何使用glColor4f设置的颜色进行渲染?

2 个答案:

答案 0 :(得分:2)

你有没有搞乱glTexEnv?如果你这样做,请致电:

glTexEnv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE)

这将恢复默认行为,即将纹理颜色与顶点颜色相乘。

答案 1 :(得分:1)

还有其他几种可能性。一种方法是将字母的形状放入模板缓冲区,然后以您喜欢的颜色绘制四边形。另一种方法是用浅灰色绘制文本,并使用光照使其以您想要的颜色显示。