GLenum dfactor )
PARAMETERS
sfactor Specifies how the red, green, blue, and alpha source blending
factors are computed. The following symbolic constants are ac‐
cepted: 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, and GL_SRC_ALPHA_SATURATE. The initial
value is GL_ONE.
Additionally, if the GL_ARB_imaging extension is supported, the
following constants are accepted: GL_CONSTANT_COLOR,
GL_ONE_MINUS_CONSTANT_COLOR, GL_CONSTANT_ALPHA,
GL_ONE_MINUS_CONSTANT_ALPHA.
dfactor Specifies how the red, green, blue, and alpha destination
blending factors are computed. Eight 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, and GL_ONE_MINUS_DST_ALPHA. The initial value is
GL_ZERO.
Additionally, if the GL_ARB_imaging extension is supported, the
following constants are accepted: GL_CONSTANT_COLOR,
GL_ONE_MINUS_CONSTANT_COLOR, GL_CONSTANT_ALPHA,
GL_ONE_MINUS_CONSTANT_ALPHA.
DESCRIPTION
In RGBA mode, pixels can be drawn using a function that blends the in‐
coming (source) RGBA values with the RGBA values that are already in the
frame buffer (the destination values). Blending is initially disabled.
Use glEnable and glDisable with argument GL_BLEND to enable and disable
blending.
glBlendFunc defines the operation of blending when it is enabled. sfac‐
tor specifies which of nine methods is used to scale the source color
components. dfactor specifies which of eight methods is used to scale
the destination color components. The eleven possible methods are de‐
scribed in the following table. Each method defines four scale factors,
one each for red, green, blue, and alpha.
In the table and in subsequent equations, source and destination color
components are referred to as (Rs,Gs,Bs,As) and (Rd,Gd,Bd,Ad). The
color specified by glBlendColor is referred to as (Rc,Gc,Bc,Ac). They
are understood to have integer values between 0 and (kR,kG,kB,kA), where
kc=2mc−1
and (mR,mG,mB,mA) is the number of red, green, blue, and alpha bit‐
planes.
Source and destination scale factors are referred to as (sR,sG,sB,sA)
GL_ONE_MINUS_SRC_ALPHA (1,1,1,1)−(As/kA,As/kA,As/kA,As/kA)
GL_DST_ALPHA (Ad/kA,Ad/kA,Ad/kA,Ad/kA)
GL_ONE_MINUS_DST_ALPHA (1,1,1,1)−(Ad/kA,Ad/kA,Ad/kA,Ad/kA)
GL_SRC_ALPHA_SATURATE (i,i,i,1)
GL_CONSTANT_COLOR (Rc,Gc,Bc,Ac)
GL_ONE_MINUS_CONSTANT_COLOR (1,1,1,1)−(Rc,Gc,Bc,Ac)
GL_CONSTANT_ALPHA (Ac,Ac,Ac,Ac)
GL_ONE_MINUS_CONSTANT_ALPHA (1,1,1,1)−(Ac,Ac,Ac,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:
Rd=min(kR,RssR+RddR)
Gd=min(kG,GssG+GddG)
Bd=min(kB,BssB+BddB)
Ad=min(kA,AssA+AddA)
Despite the apparent precision of the above equations, blending arith‐
metic is not exactly specified, because blending operates with imprecise
integer color values. However, a blend factor that should be equal to 1
is guaranteed not to modify its multiplicand, and a blend factor equal
to 0 reduces its multiplicand to 0. For example, when sfactor is
GL_SRC_ALPHA, dfactor is GL_ONE_MINUS_SRC_ALPHA, and As is equal to kA,
the equations reduce to simple replacement:
Rd=Rs
Gd=Gs
Bd=Bs
Ad=As
EXAMPLES
Transparency is best implemented using blend function (GL_SRC_ALPHA,
GL_ONE_MINUS_SRC_ALPHA) with primitives sorted from farthest to nearest.
Note that this transparency calculation does not require the presence of
alpha bitplanes in the frame buffer.
Blend function (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) is also useful for
rendering antialiased points and lines in arbitrary order.
Polygon antialiasing is optimized using blend function
(GL_SRC_ALPHA_SATURATE, GL_ONE) with polygons sorted from nearest to
farthest. (See the glEnable, glDisable reference page and the
GL_POLYGON_SMOOTH argument for information on polygon antialiasing.)
Destination alpha bitplanes, which must be present for this blend func‐
tion to operate correctly, store the accumulated coverage.
NOTES
ERRORS
GL_INVALID_ENUM is generated if either sfactor or dfactor is not an ac‐
cepted value.
GL_INVALID_OPERATION is generated if glBlendFunc is executed between the
execution of glBegin and the corresponding execution of glEnd.
ASSOCIATED GETS
glGet with argument GL_BLEND_SRC
glGet with argument GL_BLEND_DST
glIsEnabled with argument GL_BLEND
SEE ALSO
glAlphaFunc, glBlendColor, glBlendEquation, glClear, glDrawBuffer,
glEnable, glLogicOp, glStencilFunc
GLBLENDFUNC(3G)
Man(1) output converted with
man2html