我的 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 只包含那些未被第一次渲染中渲染的其他对象遮挡的对象部分。