2013-07-15 108 views

回答

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纹理和片段着色器计算深度值。这样你就可以更好地控制这个过程。

+0

嗨芬,感谢您的回复。你能详细解释一下:“你可以附加一个纹理:...给一个FBO,然后用这个纹理在屏幕上绘制一个全屏的四边形。”非常感谢。 – user1128265