后续纹理读写问题

时间:2015-08-13 22:13:44

标签: opengl fbo read-write shadow-mapping deferred-rendering

在我的渲染管道(OpenGL 3.3核心)中,我有一个跟随循环(伪代码):

for 1..n:
  render to texture T
  bind texture T
  render to back buffer (with texture T sampled in the fragment shader)

n=1时,一切正常。但是,当n=2时,第一个渲染不正确。

我怀疑render to texture TT完成render to back buffer的抽样之前开始写T

glFlush()放到循环结束后,渲染是正确的,但是,FPS略有下降。在互联网上的任何地方,我一直在寻找“如果你需要使用glFlush(),你可能做错了什么”。

我是否正确识别了问题?在这种情况下glFlush()是正确的解决方案吗?为每次迭代使用不同的纹理(我知道n)是更好的解决方案吗?

它发生在GTX580上,但不发生在ATI Mobility Radeon 3470上。

我的背景 - 详情:

我有2个灯和g缓冲区(FBO)。在每次迭代中,我正在使用一个灯光及其阴影贴图(另一个具有纹理T的FBO - 所有灯光相互作用)进行延迟着色,其中n是多个灯光。在render to back buffer我积累了光。

在下图中,我没有累积光线。相反,我将第一次迭代渲染到左视口,第二次迭代渲染到右视图以演示问题。

Separated shading passes

0 个答案:

没有答案