glBlendEquation — specify the equation used for both the RGB blend equation and the Alpha blend equation
void glBlendEquation(
|
GLenum mode) ; |
void glBlendEquationi(
|
GLuint buf, |
GLenum mode) ; |
buf
for glBlendEquationi
, specifies the index of the draw buffer
for which to set the blend equation.
mode
specifies how source and destination colors are combined.
It must be GL_FUNC_ADD
, GL_FUNC_SUBTRACT
,
GL_FUNC_REVERSE_SUBTRACT
, GL_MIN
, GL_MAX
.
The blend equations determine how a new pixel (the ''source'' color)
is combined with a pixel already in the framebuffer (the ''destination''
color). This function sets both the RGB blend equation and the alpha
blend equation to a single equation. glBlendEquationi
specifies the blend equation for a single draw buffer whereas glBlendEquation
sets the blend equation for all draw buffers.
Some of these 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 and , respectively.
The result color is referred to as . The source and destination blend factors are denoted and , respectively. For these equations all color components are understood to have values in the range .
Mode | RGB Components | Alpha Component |
---|---|---|
GL_FUNC_ADD
|
||
GL_FUNC_SUBTRACT
|
||
GL_FUNC_REVERSE_SUBTRACT
|
||
GL_MIN
|
||
GL_MAX
|
For the advanced blending equations, the source and destination color components are premultiplied by the alpha component prior to blending. The base source and destination colours are referred to as and , respectively, and are calculated as follows: , if 0, otherwise .
All of the advanced blending equations perform the following equations:
Where the weighting functions are defined as follows:
Advanced Mode | Blend Coefficients: | Conditions |
---|---|---|
GL_MULTIPLY
|
n/a
|
|
GL_SCREEN
|
n/a
|
|
GL_OVERLAY
|
|
otherwise |
GL_DARKEN
|
n/a
|
|
GL_LIGHTEN
|
n/a
|
|
GL_COLORDODGE
|
|
|
GL_COLORBURN
|
|
|
GL_HARDLIGHT
|
|
otherwise |
GL_SOFTLIGHT
|
|
|
GL_DIFFERENCE
|
n/a
|
|
GL_EXCLUSION
|
n/a
|
For the HSL modes, the following functions are defined:
float lbase = lumv3(cbase);
float llum = lumv3(clum);
float ldiff = llum - lbase;
vec3 color = cbase + vec3(ldiff);
if (minv3(color) ) {
return llum + ((color-llum)*llum) / (llum-minv3(color));} else if (maxv3(color) ) {
return llum + ((color-llum)*(1-llum)) / (maxv3(color)-llum);} else {
return color;
}
}float minbase = minv3(cbase);
float sbase = satv3(cbase);
float ssat = satv3(csat);
vec3 color;
if (sbase ) {
color = (cbase - minbase) * ssat / sbase;} else {
color = vec3(0.0);}
return SetLum(color, clum);
}HSL Mode | Blend Coefficients: |
---|---|
GL_HSL_HUE
|
|
GL_HSL_SATURATION
|
|
GL_HSL_COLOR
|
|
GL_HSL_LUMINOSITY
|
The results of all these equations are clamped to the range .
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
.
Only the GL_FUNC_ADD
, GL_FUNC_SUBTRACT
, and GL_FUNC_REVERSE_SUBTRACT
equations use the source or destination factors, while the other equations use only the source and destination colors.
Advanced blending equations are supported only when rendering to a single
color buffer using fragment color zero. If any non-NONE draw buffer uses
an advanced blend equation the error INVALID_OPERATION is
generated by glDrawArrays
or any other drawing command.
GL_INVALID_ENUM
is generated if mode
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 glBlendEquationi
if buf
is greater
than or equal to the value of GL_MAX_DRAW_BUFFERS
.
glGet with an argument of GL_BLEND_EQUATION_RGB
glGet with an argument of GL_BLEND_EQUATION_ALPHA
OpenGL ES API Version | ||||
---|---|---|---|---|
Function Name | 2.0 | 3.0 | 3.1 | 3.2 |
glBlendEquation | ✔ | ✔ | ✔ | ✔ |
glBlendEquationi | - | - | - | ✔ |
Copyright © 1991-2006 Silicon Graphics, Inc. Copyright © 2010-2015 Khronos Group. This document is licensed under the SGI Free Software B License. For details, see https://khronos.org/registry/OpenGL-Refpages/LICENSES/LicenseRef-FreeB.txt.