我正在使用片段着色器渲染到纹理。我希望下一个着色器使用着色器的前一次迭代的渲染。怎么可能?
答案 0 :(得分:3)
要在片段着色器中重复使用纹理:
或者
null
帧缓冲区对象或绑定另一个帧缓冲区对象)或
null
,附加另一个纹理framebufferTexture2D
或附加渲染缓冲区)。然后将纹理绑定为要在片段着色器中使用的普通纹理(通过着色器代码中的sampler2D
和texture2D
)。
要在顶点着色器中重复使用纹理,它大致相同,只是此要素(顶点纹理)是非标准的(并且有一些限制)。检查MAX_VERTEX_TEXTURE_IMAGE_UNITS以获取支持。
如果你有一个需要多次渲染过程的迭代算法,一种典型的方法是在两个纹理1和2之间切换:在奇数渲染过程中,1附加到当前帧缓冲对象,2被绑定为普通纹理,在甚至渲染过程中,情况正好相反。另请参阅this answer关于是否应在单个帧缓冲对象中更改纹理附件,或者应替换整个帧缓冲对象。