我試圖實現一個老派技術,其中渲染的背景圖像和預設深度信息用於遮擋場景中的其他對象。如何寫入OpenGL深度緩衝區
因此,例如,如果您有一張房間的照片,其中一些電線懸掛在天花板的天花板上,深度貼圖中的深度值會較淺,如果渲染正確,則允許角色「落後」電線,但在房間裏的其他物體前面。
到目前爲止,我已經嘗試創建使用深度紋理:
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, Image.GetWidth(), Image.GetHeight(), 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, pixels);
然後,只需將它綁定到一個四人間和渲染在屏幕上,但它不從質感寫深度值。
我也試過:
glDrawPixels(Image.GetWidth(), Image.GetHeight(), GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, pixels);
但是這會減慢我的幀率約0.25 FPS ...
我知道,你可以通過設置gl_fragDepth在pixelshader做到這一點到紋理的值,但我想知道如果我能用非像素激活硬件來實現這一點?
我同意GLSL是要走的路。總是令人驚訝的是,這不容易做到。當你交互地改變複雜場景的一小部分時,它非常有用。 – 2010-04-12 06:48:16