【发布时间】:2019-06-10 02:46:36
【问题描述】:
背景——我正在做一个有点像 After Effects 或 Photoshop 的项目——你可以操纵各种视觉层,它们最终会合成在一起。我对 WebGL 中直接可用的混合模式不满意,因此我一直在使用着色器和多通道渲染方案实现新的混合模式。基本上,我将每一层渲染到一个帧缓冲区中,然后在渲染下一层时立即将帧缓冲区用作源纹理。
我的问题 - 因为片段着色器并行运行,所以图层不是按顺序渲染的。浏览器尝试并行渲染所有层,然后将它们合成在一起,这意味着当着色器执行时,给定层的父层的源纹理是空的。因此,无法从前一层合成数据。我可以说绑定和渲染在广义上是有效的,因为我能够在渲染所有内容后保留复合纹理并在后续帧上使用它,但这不是我想要的。
我的问题 - 如何强制 WebGL 光栅化给定的帧缓冲区,以便我可以立即将其用作纹理?
【问题讨论】:
标签: javascript opengl-es webgl textures framebuffer