glBlendEquationSeparate 和 glBlendFuncSeparate - 片段着色器实现

glBlendEquationSeparate and glBlendFuncSeparate - fragment shader implementation

我有 OpenGL 应用程序,它根据以下设置混合颜色:

glBlendEquationSeparate( GL_FUNC_ADD, GL_FUNC_ADD );
glBlendFuncSeparate( GL_ONE, GL_ONE, GL_ONE, GL_ONE );

我想以同样的方式在片段着色器中混合两个纹理。上面的混合设置是否转化为简单的加法:

vec4 colorA = texture( samplerA, texCoords );
vec4 colorB = texture( samplerB, texCoords ); 
vec4 colorC = colorA + colorB;

?

的结果公式
glBlendEquationSeparate(GL_FUNC_ADD, GL_FUNC_ADD);
glBlendFuncSeparate(GL_ONE, GL_ONE, GL_ONE, GL_ONE);

dst.rgb = 1 * src.rgb + 1 * dst.rgb
dst.a   = 1 * src.a   + 1 * dst.a

Blending 与在片段着色器中计算颜色有很大不同。
在这种情况下,当前片段颜色(和 alpha 通道)被添加到帧缓冲区中的片段颜色(和 alpha 通道)。所以是的,您可以将其视为 colorA + colorB.