为什么图像显示为白色,当其alpha因子为零时。它应该是完全透明的。我使用混合函数作为glBlend(GL_ONE,GL_ONE_MINUS_SRC_ALPHA)。
答案 0 :(得分:0)
这很有意义,因为细节请仔细阅读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_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
加权后的源具有0
的alpha这一事实感到困惑,但这并不意味着什么,因为您没有告诉OpenGL将该alpha值用于任何事情。
此外,请记住这是简化的,如果您提供了顶点颜色,则可能还会与glTexEnv
及其GL_TEXTURE_ENV_MODE
设置进行一些互动。