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不支持这一点。