Test Page

From OpenGL Reference
Jump to navigation Jump to search

Specify the equation used for both the RGB blend equation and the Alpha blend equation.

C Specification[edit]

void glBlendEquation( GLenum mode );
void glBlendEquationi( GLuint buf, GLenum mode );

Parameters[edit]

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

Description[edit]

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. glBlendEquationispecifies the blend equation for a single draw buffer whereas glBlendEquationsets the blend equation for all draw buffers.

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 [math](R_{s}G_{s}B_{s}A_{s})[/math] and [math](R_{d}G_{d}B_{d}A_{d})[/math] , respectively. The result color is referred to as [math](R_{r}G_{r}B_{r}A_{r})[/math] . The source and destination blend factors are denoted [math](s_{R}s_{G}s_{B}s_{A})[/math] and [math](d_{R}d_{G}d_{B}d_{A})[/math] , respectively. For these equations all color components are understood to have values in the range [math][0,1][/math] .

Mode RGB Components Alpha Component
GL_FUNC_ADD  [math] Rr = R_{s} ⁢ s_{R} + R_{d} ⁢ d_{R} [/math]  [math] Gr = G_{s} ⁢ s_{G} + G_{d} ⁢ d_{G} [/math]  [math] Br = B_{s} ⁢ s_{B} + B_{d} ⁢ d_{B} [/math]   [math] Ar = A_{s} ⁢ s_{A} + A_{d} ⁢ d_{A} [/math] 
GL_FUNC_SUBTRACT  [math] Rr = R_{s} ⁢ s_{R} - R_{d} ⁢ d_{R} [/math]  [math] Gr = G_{s} ⁢ s_{G} - G_{d} ⁢ d_{G} [/math]  [math] Br = B_{s} ⁢ s_{B} - B_{d} ⁢ d_{B} [/math]   [math] Ar = A_{s} ⁢ s_{A} - A_{d} ⁢ d_{A} [/math] 
GL_FUNC_REVERSE_SUBTRACT  [math] Rr = R_{d} ⁢ d_{R} - R_{s} ⁢ s_{R} [/math]  [math] Gr = G_{d} ⁢ d_{G} - G_{s} ⁢ s_{G} [/math]  [math] Br = B_{d} ⁢ d_{B} - B_{s} ⁢ s_{B} [/math]   [math] Ar = A_{d} ⁢ d_{A} - A_{s} ⁢ s_{A} [/math] 
GL_MIN  [math] Rr = min ⁡ () [/math]  [math] Gr = min ⁡ () [/math]  [math] Br = min ⁡ () [/math]   [math] Ar = min ⁡ () [/math] 
GL_MAX  [math] Rr = max ⁡ () [/math]  [math] Gr = max ⁡ () [/math]  [math] Br = max ⁡ () [/math]   [math] Ar = max ⁡ () [/math] 


The results of these equations are clamped to the range [math][0,1][/math] .

The GL_MINand GL_MAXequations are useful for applications that analyze image data (image thresholding against a constant color, for example). The GL_FUNC_ADDequation 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[edit]

The GL_MIN, and GL_MAXequations do not use the source or destination factors, only the source and destination colors.

Errors[edit]

 GL_INVALID_ENUMis generated ifmodeis not one of GL_FUNC_ADDGL_FUNC_SUBTRACTGL_FUNC_REVERSE_SUBTRACTGL_MAX, or GL_MIN.

 GL_INVALID_VALUEis generated by glBlendEquationiifbufis greater than or equal to the value of GL_MAX_DRAW_BUFFERS.