不在 WebGL 中混合的 alpha 的奇怪行为
Strange behavior of alpha without blending in WebGL
我发现 WebGL 在关闭混合渲染时有奇怪的行为。我在 this simplest tutorial 上复制了它。
只需更改字符串:
gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
到
gl_FragColor = vec4(0.0, 0.0, 0.0, 0.5);
和
gl.clearColor(0.0, 0.0, 0.0, 1.0);
到
gl.clearColor(1.0, 1.0, 1.0, 1.0);
因此,由于关闭了混合,我应该会在白色背景上看到黑色形状(像素的 alpha 0.5 不应产生影响)。但我在白色背景上看到灰色形状。我相信我错过了什么,但我无法理解什么。有什么想法吗?
P.S。 gl.disable(gl.BLEND) 不会改变结果。
这里基本上已经回答了
您看到的是默认情况下 WebGL canvases 与背景混合。 canvas 的背景色或其子项的任何颜色。 HTML 的默认背景颜色是白色,因此如果您使用 [0.0, 0.0, 0.0, 0.5] 绘制,则 50% alpha 黑色与白色网页混合。
请参阅上面的 link 了解如何修复它。
我发现 WebGL 在关闭混合渲染时有奇怪的行为。我在 this simplest tutorial 上复制了它。 只需更改字符串:
gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0); 到 gl_FragColor = vec4(0.0, 0.0, 0.0, 0.5);
和 gl.clearColor(0.0, 0.0, 0.0, 1.0); 到 gl.clearColor(1.0, 1.0, 1.0, 1.0);
因此,由于关闭了混合,我应该会在白色背景上看到黑色形状(像素的 alpha 0.5 不应产生影响)。但我在白色背景上看到灰色形状。我相信我错过了什么,但我无法理解什么。有什么想法吗?
P.S。 gl.disable(gl.BLEND) 不会改变结果。
这里基本上已经回答了
您看到的是默认情况下 WebGL canvases 与背景混合。 canvas 的背景色或其子项的任何颜色。 HTML 的默认背景颜色是白色,因此如果您使用 [0.0, 0.0, 0.0, 0.5] 绘制,则 50% alpha 黑色与白色网页混合。
请参阅上面的 link 了解如何修复它。