为什么图像显示白色,当它的 alpha 因子被设为零时。它应该是完全透明的。我将混合函数用作 glBlend(GL_ONE,GL_ONE_MINUS_SRC_ALPHA)。
问问题
43 次
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_ALPHA
是0
。所以颜色的简化计算是:
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 回答