【发布时间】: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);
【问题讨论】:
-
您是否启用了深度测试?如果是,叶子可能就在天空的后面,被深度测试消除了。
-
情况更糟。我看到在其他物体后面的叶子。我认为必须对其进行排序(从最远到最近的相机)...
标签: opengl textures alpha blend