【问题标题】:OpenGL blending renders black on black as gray?OpenGL混合将黑色渲染为灰色?
【发布时间】:2015-12-04 19:21:38
【问题描述】:

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

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

我在颜色为[0,0,0,1] 的目标背景上渲染了一个颜色为[0,0,0,0.5] 的源矩形。根据我读过的所有内容,我希望结果是黑色的。相反,它看起来是大约 25% 的白色。这是我渲染 red and black rectangles with alpha values ranging from 0.0 to 1.0 时得到的结果。

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

【问题讨论】:

  • 是的,就是这样!它将画布本身设置为透明,从而呈现背景颜色。我可以通过将画布样式设置为background: black 来修复它。谢谢!

标签: opengl-es webgl shader blending


【解决方案1】:

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

【讨论】:

  • 效果很好,我不明白为什么它没有得到更多的支持
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-25
  • 2017-02-18
  • 1970-01-01
  • 2018-09-17
  • 1970-01-01
相关资源
最近更新 更多