使用32位深度缓冲区配置FBO

时间:2013-07-15 17:43:10

标签: opengl

我正在尝试使用具有32位的深度缓冲区配置帧缓冲区对象,渲染到该缓冲区对象,然后仅将生成的颜色缓冲区复制到系统颜色缓冲区。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您可以附加纹理:

glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, 
             width, height, 0, GL_DEPTH_COMPONENT,  GL_FLOAT, 0);

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_,                    
                       textureId, level);

到FBO然后使用此纹理在屏幕上绘制全屏四边形。

渲染到纹理,然后使用全屏四边形: http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-14-render-to-texture/

通过使用此GL_DEPTH_COMPONENT24,您将拥有硬件使用的最大深度精度。 在片段着色器中(对于全屏四边形),您可以从这样的纹理中读取并将其用作灰度图像。

这是另一个相关问题:How to visualize a depth texture in OpenGL?

另一方面,如果你想拥有32位缓冲区...也许更容易使用GL_R32F纹理并在片段着色器中计算深度值。这样你就可以更好地控制这个过程。