OpenGL混合渲染黑色黑色为灰色?

时间:2013-07-20 14:01:56

标签: opengl-es webgl shader blending

我在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%的白色。这是我渲染red and black rectangles with alpha values ranging from 0.0 to 1.0时得到的结果。

View live demo and source here。我是否误解了混合功能,如果是这样,我如何得到我所期望的?谢谢!

1 个答案:

答案 0 :(得分:0)

您应该为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
);