我可以避免将模板缓冲区从FBO缓冲到后缓冲区吗?

时间:2014-04-27 13:12:32

标签: opengl

我正在使用带有颜色,深度和模板的FBO来实现延迟着色。

以下是我正在做的事情:

  1. 我创建了一个带有颜色,深度和模板的FBO,然后渲染到它
  2. 我将模板blit到后缓冲区的模板缓冲区
  3. 我渲染最后一遍(使用模板测试)
  4. 有没有办法可以避免第2步?

    也就是说,我可以直接从步骤#3中的步骤#1“重复使用”相同的模板吗?我尝试创建一个仅附加模板的第二个FBO,但是这不起作用 - 我假设b / c附加一个FBO会禁用对颜色后退缓冲区的所有写入。

1 个答案:

答案 0 :(得分:1)

不幸的是,GL API实现FBO的方式强制执行这个exrta blit步骤,尽管大多数真实世界的HW可能没有它。如果他们不会为默认缓冲区制作这个特殊的FBO 0,但是对于默认的颜色,深度和模板缓冲区只需要特殊的渲染缓冲区,这样就更好了恕我直言,这样一旦可以在FBO中混合它们(我认为D3D允许这个,但我不确定)。但是目前,我不知道任何GL功能/扩展会允许这样的事情。