Opengl es OpenGL混合将黑色渲染为灰色?

Opengl es OpenGL混合将黑色渲染为灰色?,opengl-es,webgl,shader,blending,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%的白色。这是我渲染时得到的结果 。我是否误解了混合函数,如果是,我如何得到我所期望的?谢谢 您应该为alpha指定单独的函数: gl.

我在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指定单独的函数:

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
);

可能是重复的是的,就是这样!它将画布本身设置为透明,从而渲染背景色。我可以通过将画布样式设置为
background:black
来修复它。谢谢这直接起作用了,我不明白为什么没有更多的投票