2013-07-15 47 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