OpenGL透明纹理问题
Posted
技术标签:
【中文标题】OpenGL透明纹理问题【英文标题】:OpenGL transparent texture issue 【发布时间】:2015-04-22 15:05:34 【问题描述】:我对带有 Alpha 通道的纹理有疑问。我正在用树叶渲染一棵棕榈树:
但如您所见,图片左侧的树叶上方是天空。
在我的代码中,先渲染天空,然后渲染树木。 这是我渲染一棵棕榈树的代码:
RenderFrame(0);//trunk
//glColor3f(0.0, 0.6, 0.0);
glEnable(GL_BLEND);
glDisable(GL_CULL_FACE);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
leaves.RenderFrame(0);
glEnable(GL_CULL_FACE);
glDisable(GL_BLEND);
【问题讨论】:
您是否启用了深度测试?如果是,叶子可能就在天空的后面,被深度测试消除了。 情况更糟。我看到在其他物体后面的叶子。我认为必须对其进行排序(从最远到最近的相机)... 【参考方案1】:就像其他人所说,渲染顺序似乎是错误的。我过去遇到过这个问题,这不是一个简单的解决方案,特别是因为您使用的是不推荐使用的立即模式。在这个问题中看看这些解决方案:OpenGL ES2 Alpha test problems
【讨论】:
以上是关于OpenGL透明纹理问题的主要内容,如果未能解决你的问题,请参考以下文章