3

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

4

1 回答 1

6

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

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

于 2013-08-18T20:12:20.167 回答