GLAPI/glBlendEquationSeparate: Difference between revisions

From OpenGL Wiki
Jump to navigation Jump to search
m fixed sort key
m Bot: Adding better formatting.
 
(9 intermediate revisions by 2 users not shown)
Line 8: Line 8:
== Function Definition ==
== Function Definition ==


   void '''glBlendEquationSeparate'''(GLenum ''modeRGB'', GLenum ''modeAlpha'');
   void '''glBlendEquation'''(GLenum {{param|mode}});
   void '''glBlendEquationSeparatei'''(GLuint ''buf'', GLenum ''modeRGB'', GLenum ''modeAlpha'');
  void '''glBlendEquationi'''(GLuint {{param|buf}}, GLenum {{param|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 {{enum|GL_FUNC_ADD}}, {{enum|GL_FUNC_SUBTRACT}}, {{enum|GL_FUNC_REVERSE_SUBTRACT}}, {{enum|GL_MIN}}, {{enum|GL_MAX}}.
 
 
== Function Definition ==
 
  void '''glBlendEquationSeparate'''(GLenum {{param|modeRGB}}, GLenum {{param|modeAlpha}});
   void '''glBlendEquationSeparatei'''(GLuint {{param|buf}}, GLenum {{param|modeRGB}}, GLenum {{param|modeAlpha}});


; buf
; buf
: for '''glBlendEquationSeparatei''', specifies the index of the draw buffer for which to set the blend equations.
: for '''glBlendEquationSeparatei''', specifies the index of the draw buffer for which to set the blend equations.
; modeRGB
; modeRGB
: specifies the RGB blend equation, how the red, green, and blue components of the source and destination colors are combined. It must be {{code|GL_FUNC_ADD}}, {{code|GL_FUNC_SUBTRACT}}, {{code|GL_FUNC_REVERSE_SUBTRACT}}, {{code|GL_MIN}}, {{code|GL_MAX}}.
: specifies the RGB blend equation, how the red, green, and blue components of the source and destination colors are combined. It must be {{enum|GL_FUNC_ADD}}, {{enum|GL_FUNC_SUBTRACT}}, {{enum|GL_FUNC_REVERSE_SUBTRACT}}, {{enum|GL_MIN}}, {{enum|GL_MAX}}.
; modeAlpha
; modeAlpha
: specifies the alpha blend equation, how the alpha component of the source and destination colors are combined. It must be {{code|GL_FUNC_ADD}}, {{code|GL_FUNC_SUBTRACT}}, {{code|GL_FUNC_REVERSE_SUBTRACT}}, {{code|GL_MIN}}, {{code|GL_MAX}}.
: specifies the alpha blend equation, how the alpha component of the source and destination colors are combined. It must be {{enum|GL_FUNC_ADD}}, {{enum|GL_FUNC_SUBTRACT}}, {{enum|GL_FUNC_REVERSE_SUBTRACT}}, {{enum|GL_MIN}}, {{enum|GL_MAX}}.


== Description ==
== Description ==
Line 22: Line 33:
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.
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.


The blend equations use the source and destination blend factors specified by either [[GLAPI/glBlendFunc|glBlendFunc]] or [[GLAPI/glBlendFuncSeparate|glBlendFuncSeparate]]. See [[GLAPI/glBlendFunc|glBlendFunc]] or [[GLAPI/glBlendFuncSeparate|glBlendFuncSeparate]] for a description of the various blend factors.
'''glBlendEquation''' is equivalent to calling '''glBlendEquationSeparate''', passing the {{param|mode}} parameter as {{param|modeRGB}} and {{param|modeAlpha}}. Similarly, '''glBlendEquationi''' is equivalent to calling '''glBlendEquationSeparatei''', passing the {{param|mode}} parameter as {{param|modeRGB}} and {{param|modeAlpha}}.
 
The blend equations use the source and destination blend factors specified by either {{apifunc|glBlendFunc}} or {{apifunc|glBlendFuncSeparate}}. See {{apifunc|glBlendFunc}} or {{apifunc|glBlendFuncSeparate}} for a description of the various blend factors.


In the equations that follow, source and destination color components are referred to as <!--Missing Equation--> and <!--Missing Equation-->, respectively. The result color is referred to as <!--Missing Equation-->. The source and destination blend factors are denoted <!--Missing Equation--> and <!--Missing Equation-->, respectively. For these equations all color components are understood to have values in the range <!--Missing Equation-->.  
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 [0, 1].  


{|
{| class="wikitable" style="background-color:transparent;"
|+
|-
! '''Mode'''
! '''Mode'''
! '''RGB Components'''
! '''RGB Components'''
! '''Alpha Component'''
! '''Alpha Component'''
|+
|-
| {{code|GL_FUNC_ADD}}
| {{enum|GL_FUNC_ADD}}
| <!--Missing Equation--><!--Missing Equation--><!--Missing Equation-->
| <math>\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}</math>
| <!--Missing Equation-->
| <math>A_r = s_A A_s + d_A A_d</math>
|+
|-
| {{code|GL_FUNC_SUBTRACT}}
| {{enum|GL_FUNC_SUBTRACT}}
| <!--Missing Equation--><!--Missing Equation--><!--Missing Equation-->
| <math>\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}</math>
| <!--Missing Equation-->
| <math>A_r = s_A A_s - d_A A_d</math>
|+
|-
| {{code|GL_FUNC_REVERSE_SUBTRACT}}
| {{enum|GL_FUNC_REVERSE_SUBTRACT}}
| <!--Missing Equation--><!--Missing Equation--><!--Missing Equation-->
| <math>\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}</math>
| <!--Missing Equation-->
| <math>A_r = d_A A_d - s_A A_s</math>
|+
|-
| {{code|GL_MIN}}
| {{enum|GL_MIN}}
| <!--Missing Equation--><!--Missing Equation--><!--Missing Equation-->
| <math>\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}</math>
| <!--Missing Equation-->
| <math>A_r = min(A_s, A_d)</math>
|+
|-
| {{code|GL_MAX}}
| {{enum|GL_MAX}}
| <!--Missing Equation--><!--Missing Equation--><!--Missing Equation-->
| <math>\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}</math>
| <!--Missing Equation-->
| <math>A_r = max(A_s, A_d)</math>
|}
|}


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


The {{enum|GL_MIN}} and {{enum|GL_MAX}} equations are useful for applications that analyze image data (image thresholding against a constant color, for example). The {{enum|GL_FUNC_ADD}} equation is useful for antialiasing and transparency, among other things.


The results of these equations are clamped to the range <!--Missing Equation-->.
Initially, both the RGB blend equation and the alpha blend equation are set to {{enum|GL_FUNC_ADD}}.
 
The {{code|GL_MIN}} and {{code|GL_MAX}} equations are useful for applications that analyze image data (image thresholding against a constant color, for example). The {{code|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 {{code|GL_FUNC_ADD}}.
 
 


== Notes ==
== Notes ==


The {{code|GL_MIN}}, and {{code|GL_MAX}} equations do not use the source or destination factors, only the source and destination colors.
The {{enum|GL_MIN}}, and {{enum|GL_MAX}} equations do not use the source or destination factors, only the source and destination colors.


== Errors ==
== Errors ==


{{code|GL_INVALID_ENUM}} is generated if either ''modeRGB'' or ''modeAlpha'' is not one of {{code|GL_FUNC_ADD}}, {{code|GL_FUNC_SUBTRACT}}, {{code|GL_FUNC_REVERSE_SUBTRACT}}, {{code|GL_MAX}}, or {{code|GL_MIN}}.
{{enum|GL_INVALID_ENUM}} is generated if either {{param|modeRGB}} or {{param|modeAlpha}} is not one of {{enum|GL_FUNC_ADD}}, {{enum|GL_FUNC_SUBTRACT}}, {{enum|GL_FUNC_REVERSE_SUBTRACT}}, {{enum|GL_MAX}}, or {{enum|GL_MIN}}.


{{code|GL_INVALID_VALUE}} is generated by '''glBlendEquationSeparatei''' if ''buf'' is greater than or equal to the value of {{code|GL_MAX_DRAW_BUFFERS}}.
{{enum|GL_INVALID_VALUE}} is generated by '''glBlendEquationSeparatei''' if {{param|buf}} is greater than or equal to the value of {{enum|GL_MAX_DRAW_BUFFERS}}.


== Associated Gets ==
== Associated Gets ==


[[GLAPI/glGet|glGet]] with an argument of {{code|GL_BLEND_EQUATION_RGB}}
{{apifunc|glGet}} with an argument of {{enum|GL_BLEND_EQUATION_RGB}}


[[GLAPI/glGet|glGet]] with an argument of {{code|GL_BLEND_EQUATION_ALPHA}}
{{apifunc|glGet}} with an argument of {{enum|GL_BLEND_EQUATION_ALPHA}}


== See Also ==
== See Also ==


[[GLAPI/glGetString|glGetString]], [[GLAPI/glBlendColor|glBlendColor]], [[GLAPI/glBlendFunc|glBlendFunc]], [[GLAPI/glBlendFuncSeparate|glBlendFuncSeparate]]
{{apifunc|glBlendColor}}, {{apifunc|glBlendFuncSeparate}}, {{apifunc|glDrawBuffer}}, {{apifunc|glDrawBuffers}}


== Copyright ==
== Copyright ==
Line 87: Line 96:
Copyright © 2006 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/ http://opencontent.org/openpub/].
Copyright © 2006 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/ http://opencontent.org/openpub/].


[[Category:API Reference 4|BlendEquationSeparate]]
[[Category:Core API Ref Post Fragment Shader Operations|BlendEquationSeparate]]
[[Category:Core API Reference|BlendEquationSeparate]]

Latest revision as of 01:05, 19 February 2013

glBlendEquationSeparate
Core in version 4.6
Core since version 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 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 RGB Components Alpha Component
GL_FUNC_ADD $ {\begin{aligned}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{aligned}} $ $ A_{r}=s_{A}A_{s}+d_{A}A_{d} $
GL_FUNC_SUBTRACT $ {\begin{aligned}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{aligned}} $ $ A_{r}=s_{A}A_{s}-d_{A}A_{d} $
GL_FUNC_REVERSE_SUBTRACT $ {\begin{aligned}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{aligned}} $ $ A_{r}=d_{A}A_{d}-s_{A}A_{s} $
GL_MIN $ {\begin{aligned}R_{r}&=min(R_{s},R_{d})\\G_{r}&=min(G_{s},G_{d})\\B_{r}&=min(B_{s},B_{d})\end{aligned}} $ $ A_{r}=min(A_{s},A_{d}) $
GL_MAX $ {\begin{aligned}R_{r}&=max(R_{s},R_{d})\\G_{r}&=max(G_{s},G_{d})\\B_{r}&=max(B_{s},B_{d})\end{aligned}} $ $ 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

glGet with an argument of GL_BLEND_EQUATION_RGB

glGet with an argument of GL_BLEND_EQUATION_ALPHA

See Also

glBlendColor, glBlendFuncSeparate, glDrawBuffer, glDrawBuffers

Copyright

Copyright © 2006 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/.