void glBlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
sfactorRGB | Specifies how the red, green, and blue source blending factors are computed. The following symbolic constants are accepted: GL_ZERO, GL_ONE, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_CONSTANT_COLOR_EXT, GL_ONE_MINUS_CONSTANT_COLOR_EXT, GL_CONSTANT_ALPHA_EXT, GL_ONE_MINUS_CONSTANT_ALPHA_EXT, and GL_SRC_ALPHA_SATURATE. The initial value is GL_ONE. |
dfactorRGB | Specifies how the red, green, and blue destination blending factors are computed. The following symbolic constants are accepted: GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_CONSTANT_COLOR_EXT, GL_ONE_MINUS_CONSTANT_COLOR_EXT, GL_CONSTANT_ALPHA_EXT, and GL_ONE_MINUS_CONSTANT_ALPHA_EXT. The initial value is GL_ZERO. |
sfactorAlpha | Specifies how the alpha source blending factor is computed. The following symbolic constants are accepted: GL_ZERO, GL_ONE, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_CONSTANT_COLOR_EXT, GL_ONE_MINUS_CONSTANT_COLOR_EXT, GL_CONSTANT_ALPHA_EXT, GL_ONE_MINUS_CONSTANT_ALPHA_EXT, and GL_SRC_ALPHA_SATURATE. The initial value is GL_ONE. |
dfactorAlpha | Specifies how the alpha destination blending factor is computed. The following symbolic constants are accepted: GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_CONSTANT_COLOR_EXT, GL_ONE_MINUS_CONSTANT_COLOR_EXT, GL_CONSTANT_ALPHA_EXT, and GL_ONE_MINUS_CONSTANT_ALPHA_EXT. The initial value is GL_ZERO. |
For some blend equations (see glBlendEquationEXT), glBlendFuncSeparateEXT specifies separate operations for red, green, and blue (RGB) and alpha when blending is enabled. sfactorRGB specifies which of the thirteen methods is used to scale the source red, green, and blue components. sfactorAlpha specifies which of the methods is used to scale the source alpha component. dfactorRGB specifies which of the methods is used to scale the destination red, green, and blue components. dfactorAlpha specifies which of the methods is used to scale the destination alpha component. All of the possible methods are described in the following tables.
In the table and in subsequent equations, source and destination color components are
referred to as
kc = 2mc - 1
and
Constant color components are referred to as
Source and destination scale factors are referred to as
(sR, sG, sB, sA) and
(dR, dG, dB, dA).
The scale factors described in the table, denoted
(fR, fG, fB, fA),
represent either source or destination factors. All scale factors
have range
Parameter | (fR, fG, fB) | fA |
---|---|---|
GL_ZERO | (0,0,0) | 0 |
GL_ONE | (1,1,1) | 1 |
GL_SRC_COLOR | (Rs/kR, Gs/kG, Bs/kB) | As/kA |
GL_ONE_MINUS_SRC_COLOR | (1,1,1) - (Rs/kR, Gs/kG, Bs/kB) | 1 - As/kA |
GL_DST_COLOR | (Rd/kR, Gd/kG, Bd/kB) | Ad/kA |
GL_ONE_MINUS_DST_COLOR | (1,1,1) - (Rd/kR, Gd/kG, Bd/kB) | 1 - Ad/kA |
GL_SRC_ALPHA | (As/kA, As/kA, As/kA) | As/kA |
GL_ONE_MINUS_SRC_ALPHA | (1,1,1) - (As/kA, As/kA, As/kA) | 1 - As/kA |
GL_DST_ALPHA | (Ad/kA, Ad/kA, Ad/kA) | Ad/kA |
GL_ONE_MINUS_DST_ALPHA | (1,1,1) - (Ad/kA, Ad/kA, Ad/kA) | 1 - Ad/kA |
GL_SRC_ALPHA_SATURATE | (i,i,i) | 1 |
GL_CONSTANT_COLOR_EXT | (Rc, Gc, Bc) | Ac |
GL_ONE_MINUS_CONSTANT_COLOR_EXT | (1,1,1) - (Rc, Gc, Bc) | 1 - Ac |
GL_CONSTANT_ALPHA_EXT | (Ac, Ac, Ac) | Ac |
GL_ONE_MINUS_CONSTANT_ALPHA_EXT | (1,1,1) - (Ac, Ac, Ac) | 1 - Ac |
In the table,
i = min(As, kA -Ad) / kA
To determine the blended RGBA values of a pixel when drawing in RGBA mode, the system uses the following equations (if the blend equation extension is not supported):
Rd = min(kR, RssR+RddR)
Gd = min(kG, GssG+GddR)
Bd = min(kB, BssB+BddB)
Ad = min(kA, AssB+AddA)
If the blend equation extension is supported, the blended RGBA values of a pixel are computed based on the current blend equation (see glBlendEquationEXT.
When more than one color buffer is enabled for drawing, blending is done separately for each enabled buffer, using the contents of that buffer for destination color. (See glDrawBuffer.)
Blending affects only RGBA rendering. It is ignored by color index renderers.
For backward compatibility, calling glGet with the arguments GL_BLEND_SRC or GL_BLEND_DST returns the RGB blend factors.
GL_INVALID_OPERATION is generated if glBlendFunc is executed between the execution of glBegin and the corresponding execution of glEnd.