我的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只包含那些在第一遍中呈现的其他对象不会遮挡的对象部分。
答案 0 :(得分:5)
是否可以使用两个帧缓冲对象FBO1和FBO2,并将相同深度的渲染缓冲区绑定到它们两个?
是的,这是完全可能的。但是,单个渲染缓冲区或纹理不能同时是给定FBO中多个附件中的渲染目标。