为什么当我使用glReadPixels()读取z缓冲区时,z缓冲区的值总是0



为什么当我使用glReadPixels()读取z缓冲区时,z缓冲区值总是0 ?

int main()
{
    glReadPixels(0.0,0.0,width,height,GL_DEPTH_COMPONENT,GL_FLOAT,depth_data);
    for(int i=0;i<10;i++)
        for (int j=0;j<10;j++)
            cout<<depth_data[i][j]<<endl;
    return 0;
}

我猜您根本没有根据需要正确设置上下文。需要做的是写入深度缓冲区需要启用(glDepthMask(GL_TRUE);)。最初情况就是这样。此外,OpenGL要求深度测试为写入深度缓冲区的任何内容启用。如果你不希望执行深度测试,可以调用glDepthFunc来始终写入深度值。

glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDepthFunc(GL_ALWAYS); // Change this to whatever kind of depth testing you want
glDepthRange(0.0f, 1.0f);

你可能还想在读取像素数据后检查任何OpenGL错误。也许你甚至没有深度缓冲?

相关内容

  • 没有找到相关文章

最新更新