javascript - 有没有办法在片段着色器中使用先前渲染的结果?

标签 javascript glsl webgl shader fragment-shader

我正在使用片段着色器来渲染纹理。我希望着色器的前一次迭代的渲染被下一次使用。这怎么可能?

最佳答案

在片段着色器中重新使用纹理:

要么

  • 取消绑定(bind)纹理所附加的当前帧缓冲区对象(绑定(bind)null帧缓冲区对象或绑定(bind)另一个帧缓冲区对象),

  • 从帧缓冲区对象中分离纹理(并附加 null,使用 framebufferTexture2D 附加另一个纹理或改为附加渲染缓冲区)。

然后将纹理绑定(bind)为要在片段着色器中使用的普通纹理(通过着色器代码中的 sampler2Dtexture2D)。

要在顶点着色器中重新使用纹理,大致相同,只是这个特性(顶点纹理)是非标准的(并且有一些限制)。检查MAX_VERTEX_TEXTURE_IMAGE_UNITS寻求支持。

如果您有一个需要多次渲染过程的迭代算法,一种典型的方法是在两个纹理 1 和 2 之间切换:在奇数渲染过程中,1 附加到当前帧缓冲区对象,2 作为普通纹理绑定(bind),并且在均匀的渲染过程中,情况恰恰相反。另见 this answer关于是应该在单个帧缓冲区对象中更改纹理附件,还是应该交换整个帧缓冲区对象。

关于javascript - 有没有办法在片段着色器中使用先前渲染的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21362865/

相关文章:

javascript - 谷歌图像灰色框弹出外观与js

javascript - Internet Explorer (IE) 中的脚本挂起并且对空缓存不负责任(在缓存中工作正常)

javascript - Adobe AIR/Flex 中的嵌入式浏览器 - 缓存 javascript 和 css 文件?

opengl - 使用 GLSL 渲染矩形纹理

iphone - 在 OpenGL ES 2 下的 GLSL 中,如何编写一个对先前输出进行操作的着色器

javascript - 从 javascript 到片段着色器的单色

javascript - 尽管禁用 mipmap 和半像素校正,纹理仍然出血

javascript - 如何通过 RSS 解析 Craigslist 内容

javascript - WebGL2 将 Uint16Array 作为图像渲染到 Canvas

javascript - Three.js 第一人称控制