glBlendEquationSeparate

From OpenGL Reference
Jump to navigation Jump to search

Set the RGB blend equation and the alpha blend equation separately.

C Specification[edit]

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


Parameters[edit]

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[edit]

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 [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_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[edit]

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


Errors[edit]

 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[edit]

 glGet with an argument of GL_BLEND_EQUATION_RGB 

 glGet with an argument of GL_BLEND_EQUATION_ALPHA 


Version Support[edit]

 glBlendEquationSeparate  2.0+
 glBlendEquationSeparatei  4.0+

See Also[edit]

 glGetString , glBlendColor , glBlendFunc , glBlendFuncSeparate 


Copyright[edit]

Copyright© 1991-2006 Silicon Graphics, Inc. Copyright© 2010-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.