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

Vio*_*nev 3 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
Run Code Online (Sandbox Code Playgroud)

结果应该是TEXTURE2仅包含对象的那些部分,这些部分不会被第一遍中呈现的其他对象遮挡.

dat*_*olf 6

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

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

  • 你的意思是*同一个FBO上的几个附件,对吧? (3认同)