1

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

4

1 回答 1

0

这是有道理的,有关详细信息,请仔细阅读官方文档。

但是为了简单的解释,让我给你一个简单的例子。因此,想象您的来源是(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设置进行一些交互。

于 2013-08-08T12:24:23.413 回答