4

我在 webGL 工作。我对OpenGL很陌生。混合功能有问题。我的选择如下:

gl.enable(gl.BLEND)
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA)

[0,0,0,0.5]我在目标背景上用颜色渲染了一个源矩形[0,0,0,1]。根据我读过的所有内容,我希望结果是黑色的。相反,它看起来是大约 25% 的白色。这是我渲染alpha 值范围为 0.0 到 1.0 的红色和黑色矩形时得到的结果。

在此处查看现场演示和源代码。我是否误解了混合功能,如果是这样,我该如何获得我的期望?谢谢!

4

1 回答 1

2

您应该为 alpha 指定单独的函数:

gl.enable(gl.BLEND);
gl.blendEquation(gl.FUNC_ADD);
gl.blendFuncSeparate(
    gl.SRC_ALPHA,
    gl.ONE_MINUS_SRC_ALPHA,
    gl.ONE,
    gl.ONE_MINUS_SRC_ALPHA
);
于 2015-12-04T11:21:38.200 回答