Opengl es 混合透明图像显示白色因子
当阿尔法因子为零时,为什么图像显示为白色。它应该是完全透明的。我将混合函数用作glBlend(GL_ONE,GL_ONE _减去_SRC_ALPHA)。这很有意义,有关详细信息,请仔细阅读 但是为了简单的解释,让我给你一个简单的例子。因此,假设您的源代码是Opengl es 混合透明图像显示白色因子,opengl-es,Opengl Es,当阿尔法因子为零时,为什么图像显示为白色。它应该是完全透明的。我将混合函数用作glBlend(GL_ONE,GL_ONE _减去_SRC_ALPHA)。这很有意义,有关详细信息,请仔细阅读 但是为了简单的解释,让我给你一个简单的例子。因此,假设您的源代码是(255,0,0,0)(使用(R,G,B,A)表示法),目标代码是(0255,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
(255,0,0,0)
(使用(R,G,B,A)表示法),目标代码是(0255,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
因此,您的最终颜色将是(255255,0,0)
。使用GL_ONE
加权后的源代码的alpha值为0
这一事实可能会让您感到困惑,但这并不意味着什么,因为您没有告诉OpenGL将该alpha值用于任何事情
另外,请记住,这是简化的,如果您提供了顶点颜色,则也可能与glTexEnv
及其GL_纹理_ENV_模式
设置有一些交互作用