【问题标题】:Blending a transparent image shows a white factor混合透明图像显示白色因子
【发布时间】:2013-08-08 20:29:58
【问题描述】:

当图像的 alpha 因子为零时,为什么图像显示为白色。它应该是完全透明的。我正在使用混合函数作为 glBlend(GL_ONE,GL_ONE_MINUS_SRC_ALPHA)。

【问题讨论】:

    标签: opengl-es


    【解决方案1】:

    有道理,详情请仔细阅读official documentation

    但是为了简单的解释,让我给你一个简单的例子。所以想象你的来源是(255,0,0,0)(使用(R,G,B,A)符号),你的目的地是(0,255,0,0)。源值使用GL_ONE 加权,转换为(1.0f,1.0f,1.0f,1.0f),源值使用(1-0.0f,1-0.0f,1-0.0f,1-0.0f),因为您的SRC_ALPHA0。所以颜色的简化计算是:

    R = 255 * 1.0f + 0   * 1.0f = 255
    G = 0   * 1.0f + 255 * 1.0f = 255
    B = 0   * 1.0f + 0   * 1.0f = 0
    A = 0   * 1.0f + 0   * 1.0f = 0
        |      |      |     |
        |      |      |   destination weight
        |      |      |
        |      |    destination color
        |      |
        |     source weight
        |
      source color
    

    所以你的最终颜色是(255,255,0,0)。您可能会对使用 GL_ONE 加权后的源的 alpha 为 0 的事实感到困惑,但这并不意味着任何事情,因为您没有告诉 OpenGL 将该 alpha 值用于任何事情。

    另外,请记住,这是简化的,如果您提供了顶点颜色,则可能还会与 glTexEnv 及其 GL_TEXTURE_ENV_MODE 设置进行一些交互。

    【讨论】:

      猜你喜欢
      • 2020-11-29
      • 2018-07-18
      • 2012-11-15
      • 2014-08-23
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      相关资源
      最近更新 更多