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

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仅包含第一次渲染中未被其他对象遮挡的对象部分。
1个回答

6

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

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


@NicolBolas:当然。我编辑了我的回答,以使这更加清晰明了。 - datenwolf
我可以使用其中一个FBO来读取深度缓冲区,同时使用另一个作为渲染目标并向其写入吗? - Cheeku

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接