glBlendEquationSeparate - set the RGB blend equation and the alpha blend equation separately
Contents
Associated Gets
glGet() with an argument of GL_BLEND_EQUATION_RGBglGet() with an argument of GL_BLEND_EQUATION_ALPHA
C Specification
voidglBlendEquationSeparate(GLenummodeRGB,GLenummodeAlpha);voidglBlendEquationSeparatei(GLuintbuf,GLenummodeRGB,GLenummodeAlpha);
Copyright
Copyright © 1991-2006 Silicon Graphics, Inc.
Copyright © 2010-2014 Khronos Group
[FIXME: source] 11/18/2024 GLBLENDEQUATIONSEPAR(3G)
Description
The blend equations determines how a new pixel (the ''source'' color) is combined with a pixel already in
the framebuffer (the ''destination'' color). These functions specify one blend equation for the RGB-color
components and one blend equation for the alpha component. glBlendEquationSeparatei specifies the blend
equations for a single draw buffer whereas glBlendEquationSeparate sets the blend equations for all draw
buffers.
The blend equations use the source and destination blend factors specified by either glBlendFunc() or
glBlendFuncSeparate(). See glBlendFunc() or glBlendFuncSeparate() for a description of the various blend
factors.
In the equations that follow, source and destination color components are referred to as R s G s B s A s
and R d G d B d A d, respectively. The result color is referred to as R r G r B r A r. The source and
destination blend factors are denoted s R s G s B s A and d R d G d B d A, respectively. For these
equations all color components are understood to have values in the range 0 1.
┌──────────────────────────┬───────────────────────────────────────────────────┬───────────────────────────────────────────────────┐
│ Mode │ RGBComponents │ AlphaComponent │
├──────────────────────────┼───────────────────────────────────────────────────┼───────────────────────────────────────────────────┤
│ GL_FUNC_ADD │ Rr │ Ar │
│ │ = │ = │
│ │ │ │
│ │ R │ A │
│ │ s │ s │
│ │ │ │
│ │ │ │
│ │ s │ s │
│ │ R │ A │
│ │ │ │
│ │ + │ + │
│ │ R │ A │
│ │ d │ d │
│ │ │ │
│ │ │ │
│ │ d │ d │
│ │ R │ A │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ Gr │ │
│ │ = │ │
│ │ │ │
│ │ G │ │
│ │ s │ │
│ │ │ │
│ │ │ │
│ │ s │ │
│ │ G │ │
│ │ │ │
│ │ + │ │
│ │ G │ │
│ │ d │ │
│ │ │ │
│ │ │ │
│ │ d │ │
│ │ G │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ Br │ │
│ │ = │ │
│ │ │ │
│ │ B │ │
│ │ s │ │
│ │ │ │
│ │ │ │
│ │ s │ │
│ │ B │ │
│ │ │ │
│ │ + │ │
│ │ B │ │
│ │ d │ │
│ │ │ │
│ │ │ │
│ │ d │ │
│ │ B │ │
├──────────────────────────┼───────────────────────────────────────────────────┼───────────────────────────────────────────────────┤
│ GL_FUNC_SUBTRACT │ Rr │ Ar │
│ │ = │ = │
│ │ │ │
│ │ R │ A │
│ │ s │ s │
│ │ │ │
│ │ │ │
│ │ s │ s │
│ │ R │ A │
│ │ │ │
│ │ - │ - │
│ │ R │ A │
│ │ d │ d │
│ │ │ │
│ │ │ │
│ │ d │ d │
│ │ R │ A │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ Gr │ │
│ │ = │ │
│ │ │ │
│ │ G │ │
│ │ s │ │
│ │ │ │
│ │ │ │
│ │ s │ │
│ │ G │ │
│ │ │ │
│ │ - │ │
│ │ G │ │
│ │ d │ │
│ │ │ │
│ │ │ │
│ │ d │ │
│ │ G │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ Br │ │
│ │ = │ │
│ │ │ │
│ │ B │ │
│ │ s │ │
│ │ │ │
│ │ │ │
│ │ s │ │
│ │ B │ │
│ │ │ │
│ │ - │ │
│ │ B │ │
│ │ d │ │
│ │ │ │
│ │ │ │
│ │ d │ │
│ │ B │ │
├──────────────────────────┼───────────────────────────────────────────────────┼───────────────────────────────────────────────────┤
│ GL_FUNC_REVERSE_SUBTRACT │ Rr │ Ar │
│ │ = │ = │
│ │ │ │
│ │ R │ A │
│ │ d │ d │
│ │ │ │
│ │ │ │
│ │ d │ d │
│ │ R │ A │
│ │ │ │
│ │ - │ - │
│ │ R │ A │
│ │ s │ s │
│ │ │ │
│ │ │ │
│ │ s │ s │
│ │ R │ A │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ Gr │ │
│ │ = │ │
│ │ │ │
│ │ G │ │
│ │ d │ │
│ │ │ │
│ │ │ │
│ │ d │ │
│ │ G │ │
│ │ │ │
│ │ - │ │
│ │ G │ │
│ │ s │ │
│ │ │ │
│ │ │ │
│ │ s │ │
│ │ G │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ Br │ │
│ │ = │ │
│ │ │ │
│ │ B │ │
│ │ d │ │
│ │ │ │
│ │ │ │
│ │ d │ │
│ │ B │ │
│ │ │ │
│ │ - │ │
│ │ B │ │
│ │ s │ │
│ │ │ │
│ │ │ │
│ │ s │ │
│ │ B │ │
├──────────────────────────┼───────────────────────────────────────────────────┼───────────────────────────────────────────────────┤
│ GL_MIN │ Rr │ Ar │
│ │ = │ = │
│ │ │ │
│ │ min │ min │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ R │ A │
│ │ s │ s │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ R │ A │
│ │ d │ d │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ Gr │ │
│ │ = │ │
│ │ │ │
│ │ min │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ G │ │
│ │ s │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ G │ │
│ │ d │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ Br │ │
│ │ = │ │
│ │ │ │
│ │ min │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ B │ │
│ │ s │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ B │ │
│ │ d │ │
├──────────────────────────┼───────────────────────────────────────────────────┼───────────────────────────────────────────────────┤
│ GL_MAX │ Rr │ Ar │
│ │ = │ = │
│ │ │ │
│ │ max │ max │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ R │ A │
│ │ s │ s │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ R │ A │
│ │ d │ d │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ Gr │ │
│ │ = │ │
│ │ │ │
│ │ max │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ G │ │
│ │ s │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ G │ │
│ │ d │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ Br │ │
│ │ = │ │
│ │ │ │
│ │ max │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ B │ │
│ │ s │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ B │ │
│ │ d │ │
└──────────────────────────┴───────────────────────────────────────────────────┴───────────────────────────────────────────────────┘
The results of these equations are clamped to the range 0 1.
The GL_MIN and GL_MAX equations are useful for applications that analyze image data (image thresholding
against a constant color, for example). The GL_FUNC_ADD equation is useful for antialiasing and
transparency, among other things.
Initially, both the RGB blend equation and the alpha blend equation are set to GL_FUNC_ADD.
Errors
GL_INVALID_ENUM is generated if either modeRGB or modeAlpha is not one of GL_FUNC_ADD, GL_FUNC_SUBTRACT,
GL_FUNC_REVERSE_SUBTRACT, GL_MAX, or GL_MIN.
GL_INVALID_VALUE is generated by glBlendEquationSeparatei if buf is greater than or equal to the value of
GL_MAX_DRAW_BUFFERS.
Name
glBlendEquationSeparate - set the RGB blend equation and the alpha blend equation separately
Notes
The GL_MIN, and GL_MAX equations do not use the source or destination factors, only the source and
destination colors.
Parameters
buf
for glBlendEquationSeparatei, specifies the index of the draw buffer for which to set the blend
equations.
modeRGB
specifies the RGB blend equation, how the red, green, and blue components of the source and
destination colors are combined. It must be GL_FUNC_ADD, GL_FUNC_SUBTRACT, GL_FUNC_REVERSE_SUBTRACT,
GL_MIN, GL_MAX.
modeAlpha
specifies the alpha blend equation, how the alpha component of the source and destination colors are
combined. It must be GL_FUNC_ADD, GL_FUNC_SUBTRACT, GL_FUNC_REVERSE_SUBTRACT, GL_MIN, GL_MAX.
See Also
glGetString(), glBlendColor(), glBlendFunc(), glBlendFuncSeparate()
Version Support
┌──────────────────────────┬───────────────────────────────────────────────────────────────────────┐
│ │ OpenGLVersion │
├──────────────────────────┼─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┤
│ Function │ 2.0 │ 2.1 │ 3.0 │ 3.1 │ 3.2 │ 3.3 │ 4.0 │ 4.1 │ 4.2 │ 4.3 │ 4.4 │ 4.5 │
│ / │ │ │ │ │ │ │ │ │ │ │ │ │
│ Feature │ │ │ │ │ │ │ │ │ │ │ │ │
│ Name │ │ │ │ │ │ │ │ │ │ │ │ │
├──────────────────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ glBlendEquationSeparate │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │
├──────────────────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ glBlendEquationSeparatei │ - │ - │ - │ - │ - │ - │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │ ✔ │
└──────────────────────────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
