Webgl 是否可以在仍写入另一个绘图缓冲区时放弃一个绘图缓冲区?

Webgl 是否可以在仍写入另一个绘图缓冲区时放弃一个绘图缓冲区?,webgl,webgl2,glsles,Webgl,Webgl2,Glsles,用例基本上与 答案之一是丢弃未能通过阿尔法测试的碎片 因此,我想知道是否有可能在帧缓冲区中对一个渲染目标放弃,同时仍对其他渲染目标进行写入。在我最初尝试不为该目标写入值时,它似乎仍然写入默认值(0,uvec4(0),等等)否,如果放弃,则不会更新缓冲区,无论您是否事先指定了输出变量 discard关键字仅允许在片段着色器中使用。可以在片段着色器中使用它来放弃对当前片段的操作。此关键字导致片段被丢弃,并且不会对任何缓冲区进行更新 –(PDF第64页) (强调矿山) 如果启用了混合,则可以将透明颜色

用例基本上与

答案之一是丢弃未能通过阿尔法测试的碎片


因此,我想知道是否有可能在帧缓冲区中对一个渲染目标
放弃
,同时仍对其他渲染目标进行写入。在我最初尝试不为该目标写入
值时,它似乎仍然写入默认值(
0
uvec4(0)
,等等)

否,如果
放弃
,则不会更新缓冲区,无论您是否事先指定了输出变量

discard
关键字仅允许在片段着色器中使用。可以在片段着色器中使用它来放弃对当前片段的操作。此关键字导致片段被丢弃,并且不会对任何缓冲区进行更新

–(PDF第64页)

(强调矿山)

如果启用了混合,则可以将透明颜色写入要“放弃”的输出

//丢弃;
out=vec4(0.0,0.0,0.0,0.0);

在移动设备上,另一个选项是获取上一个片段的颜色(gl_LastFragData/gl_LastFragColorARM)。但并非所有OpenGL ES实现都支持这一点,尤其是我认为WebGL不支持这一点。