问题描述
用例与Alpha Blending with Integer Texture for Object Picking
基本相同答案之一是丢弃未通过 alpha 测试的片段。
所以我想知道是否可以为帧缓冲区中的一个渲染目标 discard
,同时仍然写入其他渲染目标。在我最初尝试不为该目标写入 out
值时,它似乎仍然写入默认值(0
、uvec4(0)
等)
解决方法
不,如果您 discard
则不会更新任何缓冲区,无论您是否事先分配给输出变量。
discard
关键字仅允许在片段着色器中使用。它可以在片段着色器中使用以放弃对当前片段的操作。此关键字会导致片段被丢弃,并且不会更新任何缓冲区。
– The OpenGL ES Shading Language Specification,Page 58(PDF 中的第 64 页)
(强调我的)
如果启用了混合,那么您可以将透明颜色写入要“丢弃”的输出。
// discard;
out = vec4(0.0,0.0,0.0);