【问题标题】:OpenGL transparent texture issueOpenGL透明纹理问题
【发布时间】: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


【解决方案1】:

就像其他人所说,渲染顺序似乎是错误的。我过去遇到过这个问题,这不是一个简单的解决方案,特别是因为您使用的是不推荐使用的立即模式。在这个问题中看看这些解决方案:OpenGL ES2 Alpha test problems

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    相关资源
    最近更新 更多