我的OpenGL场景有两个步骤——第一步渲染整个场景(颜色和深度),第二步只渲染一些场景对象,需要第一步的深度缓冲区。
是否可以使用两个帧缓冲对象FBO1和FBO2,并将相同的深度渲染缓冲区绑定到它们两个?伪代码如下:
// ---------- Initialization ----------
// create 'FBO1'
// create render buffer 'RB'
// bind RB to FBO1
// bind TEXTURE1 to FBO1 for color rendering
// create FBO2
// bind RB to FBO2
// bind TEXTURE2 to FBO2 for color rendering
// ---------- Rendering frame----------
// bind FBO1
// render entire scene with depth writing enabled
// bind FB2
// render some objects again with depth mask GL_EQUAL
结果应该是TEXTURE2仅包含第一次渲染中未被其他对象遮挡的对象部分。