将相同的渲染缓冲区绑定到多个FBO

时间:2013-08-18 11:09:32

标签: opengl rendering opengl-es-2.0

我的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只包含那些在第一遍中呈现的其他对象不会遮挡的对象部分。

1 个答案:

答案 0 :(得分:5)

  

是否可以使用两个帧缓冲对象FBO1和FBO2,并将相同深度的渲染缓冲区绑定到它们两个?

是的,这是完全可能的。但是,单个渲染缓冲区或纹理不能同时是给定FBO中多个附件中的渲染目标。