没有在WebGL中混合的alpha的奇怪行为

时间:2016-02-16 19:23:43

标签: opengl-es 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)不会改变结果。

1 个答案:

答案 0 :(得分:1)

这基本上已在这里得到解答

Alpha rendering difference between OpenGL and WebGL

您所看到的是,默认情况下,WebGL画布与背景混合在一起。画布的背景颜色或者它的子画面。 HTML的默认背景颜色为白色,因此如果使用[0.0,0.0,0.0,0.5]进行绘制,则将50%alpha黑色与白色网页混合。

请参阅上面的链接以了解如何修复它。