OpenGL在不使用N个目标的情况下混合以前的N个渲染
通过在同一FBO中具有5个渲染目标,我在每一帧混合了之前的5个渲染。在每一帧我都绑定OpenGL在不使用N个目标的情况下混合以前的N个渲染,opengl,Opengl,通过在同一FBO中具有5个渲染目标,我在每一帧混合了之前的5个渲染。在每一帧我都绑定 base_target + frame%5 在片段着色器中,我遍历了从base_target到base_target+4的所有纹理,将它们相加并显示结果。它很好用,但我想混合更多,比如10。问题是渲染目标的最大数量是8 有没有办法克服这个问题?我是否可以拥有一个渲染目标,它实际上是一个包含大量元素的纹理数组,然后在每次迭代时选择要渲染到的纹理中的哪一个?实际上只需要三个渲染目标: 第一个RT是累积缓冲区 第
base_target + frame%5
在片段着色器中,我遍历了从base_target到base_target+4的所有纹理,将它们相加并显示结果。它很好用,但我想混合更多,比如10。问题是渲染目标的最大数量是8
有没有办法克服这个问题?我是否可以拥有一个渲染目标,它实际上是一个包含大量元素的纹理数组,然后在每次迭代时选择要渲染到的纹理中的哪一个?实际上只需要三个渲染目标:
- 第一个RT是累积缓冲区
- 第二个RT是当前帧缓冲区
- 第三个RT是临时缓冲区
你考虑过使用纹理阵列吗?这就是我的想法,但我只是从中读到,我从来没有将它们用作渲染目标。你能给我演示一下如何将纹理数组添加到fbo并渲染到数组中的特定纹理(然后在下一帧切换到下一个纹理)的示例代码吗?我不确定我是否理解你想要什么,但我可以给你这个指针。所以通常我会做glDrawBuffers并告诉要绘制的目标,然后在着色器中写入布局(location=n)什么。在纹理数组的情况下,我会将fbo仅与一个目标绑定(我假设该数组是单个目标),然后如何告诉它写入第三个纹理?如所述,您可以指定(在几何体着色器中)在纹理的哪个层上渲染基元。