Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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透明纹理问题_Opengl_Textures_Alpha_Blend - Fatal编程技术网

OpenGL透明纹理问题

OpenGL透明纹理问题,opengl,textures,alpha,blend,Opengl,Textures,Alpha,Blend,我对alpha通道的纹理有问题。我正在渲染一棵有叶子的棕榈树: 但正如你所看到的,天空覆盖着图片左侧的树叶 在我的代码中,渲染天空,然后渲染树。 下面是我渲染一棵棕榈树的代码: RenderFrame(0);//trunk //glColor3f(0.0, 0.6, 0.0); glEnable(GL_BLEND); glDisable(GL_CULL_FACE); glBlendFunc(GL_SRC_ALPHA

我对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);

正如其他人所说,渲染的顺序似乎是错误的。我曾经遇到过这个问题,它不是一个简单的解决方案,特别是因为您使用的是不推荐的立即模式。在这个问题中看一下这些解决方案:

您是否启用了深度测试?如果是的话,树叶可能就在天空后面,被深度测试消除了。更糟糕的是。我看见树叶落在其他物体后面。我认为它必须被分类(从最远的摄像机到最近的摄像机)。。。