# GLAPI/glBlendEquationSeparate

(Redirected from GLAPI/glBlendEquation)
Core in version 4.4 2.0

glBlendEquationSeparate: set the RGB blend equation and the alpha blend equation separately

## Function Definition

 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​.

## Function Definition

 void glBlendEquationSeparate(GLenum modeRGB​, GLenum modeAlpha​);
void glBlendEquationSeparatei(GLuint buf​, GLenum modeRGB​, GLenum modeAlpha​);

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​.

## 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 specifie 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.

glBlendEquation is equivalent to calling glBlendEquationSeparate, passing the mode​ parameter as modeRGB​ and modeAlpha​. Similarly, glBlendEquationi is equivalent to calling glBlendEquationSeparatei, passing the mode​ parameter as modeRGB​ and modeAlpha​.

The blend equations use the source and destination blend factors specified by either or . See or 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 RGB Components Alpha Component
GL_FUNC_ADD​ \begin{align}R_r & = s_R R_s + d_R R_d\\G_r & = s_G G_s + d_G G_d\\B_r & = s_B B_s + d_B B_d\end{align} $A_r = s_A A_s + d_A A_d$
GL_FUNC_SUBTRACT​ \begin{align}R_r & = s_R R_s - d_R R_d\\G_r & = s_G G_s - d_G G_d\\B_r & = s_B B_s - d_B B_d\end{align} $A_r = s_A A_s - d_A A_d$
GL_FUNC_REVERSE_SUBTRACT​ \begin{align}R_r & = d_R R_d - s_R R_s\\G_r & = d_G G_d - s_G G_s\\B_r & = d_B B_d - s_B B_s\end{align} $A_r = d_A A_d - s_A A_s$
GL_MIN​ \begin{align}R_r & = min(R_s, R_d)\\G_r & = min(G_s, G_d)\\B_r & = min(B_s, B_d)\end{align} $A_r = min(A_s, A_d)$
GL_MAX​ \begin{align}R_r & = max(R_s, R_d)\\G_r & = max(G_s, G_d)\\B_r & = max(B_s, B_d)\end{align} $A_r = max(A_s, A_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​.

## Notes

The GL_MIN​, and GL_MAX​ equations do not use the source or destination factors, only the source and destination colors.

## 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​.

## Associated Gets

with an argument of GL_BLEND_EQUATION_RGB​

with an argument of GL_BLEND_EQUATION_ALPHA​