Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webgl 使用多个着色器文件中的gl_FragData[]_Webgl_Webgl Extensions_Deferred Shading - Fatal编程技术网

Webgl 使用多个着色器文件中的gl_FragData[]

Webgl 使用多个着色器文件中的gl_FragData[],webgl,webgl-extensions,deferred-shading,Webgl,Webgl Extensions,Deferred Shading,我用一些着色器设置了webgl着色器。我正在使用多个渲染目标(gl_FragData[]) 在第一个着色器中,我可以输出到 gl_FragData[0] = vec4(..); gl_FragData[1] = vec4(..); gl_FragData[2] = vec4(..); 现在使用第二个着色器,我想输出到gl_FragData[3],并保存纹理以传递到第三个着色器 第二个着色器似乎没有输出到gl_FragData[3],但是如果我在第一个着色器中使用它,这会起作用。我希望gl_Fr

我用一些着色器设置了webgl着色器。我正在使用多个渲染目标(gl_FragData[])

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

gl_FragData[0] = vec4(..);
gl_FragData[1] = vec4(..);
gl_FragData[2] = vec4(..);
现在使用第二个着色器,我想输出到gl_FragData[3],并保存纹理以传递到第三个着色器

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


我认为这可能与帧缓冲区有关,但我尝试过改变它,但没有成功。我缺少什么?

如果要使用相同的帧缓冲区,则需要屏蔽未使用的绘制缓冲区:
drawBuffers([COLOR\u ATTACHMENT0,COLOR\u ATTACHMENT1,COLOR\u ATTACHMENT2])
用于第一个着色器,而
drawBuffers([NONE,NONE,COLOR\u ATTACHMENT3])
用于第二个着色器

发件人:

未定义与片段着色器未写入的片段关联的任何颜色或颜色组件


为什么不制作两个帧缓冲区呢。一个有3个附件,一个有1个附件,输出到第二个着色器中的gl_FragData[0]