Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl:仅使用纹理为彩色对象提供alpha通道_Opengl_Textures_Alphablending - Fatal编程技术网

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

Opengl:仅使用纹理为彩色对象提供alpha通道,opengl,textures,alphablending,Opengl,Textures,Alphablending,我是OpenGL新手,我不知道如何做: 我想渲染一个字母,并能够改变它的颜色,所以我有一个透明背景上的字母纹理。我使用以下代码成功渲染了它: glEnable(GL_BLEND) glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) 但这会将字母呈现为黑色,因为它位于纹理上。如何使用设置为glColor4f的颜色来渲染它?您一直在使用glTexEnv吗?如果有,请致电: glTexEnv(GL\u纹理\u环境,GL\u纹理\u环境模式,GL\u

我是OpenGL新手,我不知道如何做:
我想渲染一个字母,并能够改变它的颜色,所以我有一个透明背景上的字母纹理。我使用以下代码成功渲染了它:

glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)  

但这会将字母呈现为黑色,因为它位于纹理上。如何使用设置为
glColor4f
的颜色来渲染它?

您一直在使用glTexEnv吗?如果有,请致电:

glTexEnv(GL\u纹理\u环境,GL\u纹理\u环境模式,GL\u调制)


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

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

如果默认行为是将纹理颜色与顶点颜色相乘,那么我应该将纹理设置为白色而不是黑色,对吗?是的,但取决于您传递给glColor4f的内容。是的,这就是问题所在,我将纹理颜色更改为白色,现在效果如预期。