0

我有一个带有一些着色器的 webgl 着色器。我正在使用多个渲染目标(gl_FragData[])

在第一个着色器中,我可以输出到

gl_FragData[0] = vec4(..);
gl_FragData[1] = vec4(..);
gl_FragData[2] = vec4(..);

现在使用我的第二个着色器,我想输出到 gl_FragData[3] 并保存纹理以传递给我的第三个着色器。

第二个着色器似乎没有输出到 gl_FragData[3],但如果我在第一个着色器中使用它,它就可以工作。我希望将 gl_FragData[3] 的输出存储在纹理中并发送到第三个着色器。

我认为这可能与帧缓冲区有关,但我已经尝试改变它并且没有运气。我错过了什么?

4

1 回答 1

0

如果要使用相同的帧缓冲区,则需要屏蔽未使用的绘制缓冲区:drawBuffers([COLOR_ATTACHMENT0, COLOR_ATTACHMENT1, COLOR_ATTACHMENT2])第一个着色器和drawBuffers([NONE, NONE, NONE, COLOR_ATTACHMENT3])第二个着色器。

EXT_draw_buffers

与片段相关联的任何颜色或颜色分量都未由片段着色器写入。

于 2017-04-21T21:30:09.513 回答