OpenGL:使用帧缓冲对象进行多次渲染

时间:2012-07-07 14:53:39

标签: opengl glsl shader fbo multipass

在开发小型2D引擎时,我偶然发现了一个小设计问题,我很遗憾,如果没有你的帮助,我的知识水平无法解决。

让我解释一下:我正在开发2D引擎的游戏应该包含复杂的效果,这可能需要多次渲染过程。问题是,我不确定我是否理解多通道渲染的概念。

在这种知识水平上,我会这样实现:

  1. 最初创建,设置(将其附加到纹理,...)并绑定帧缓冲区对象
  2. 现在渲染效果应该应用于FBO附加纹理的内容
  3. 使用第一遍的着色器
  4. 将该纹理渲染到同一个FBO
  5. 取消绑定FBO并使用最后一次使用的着色器将附加的纹理渲染到标准FBO
  6. 现在的问题是,这是解决问题的最有效方法,还是有更好的办法解决我的问题。

1 个答案:

答案 0 :(得分:2)

  

使用着色器进行第一遍

,将该纹理渲染到同一个FBO

cannot simultaneously read from and write to the same image in the same texture。好吧,你可以,但是你得到了未定义的行为,这可能没有帮助。因此,您需要使用多个纹理,或者在可用时使用NV_texture_barrier