diff --git a/src/RageDisplay_OGL.cpp b/src/RageDisplay_OGL.cpp index 4af894d310..8bb1b9385e 100644 --- a/src/RageDisplay_OGL.cpp +++ b/src/RageDisplay_OGL.cpp @@ -1715,6 +1715,8 @@ void RageDisplay_OGL::SetBlendMode( BlendMode mode ) { if( mode == BLEND_INVERT_DEST ) GLExt.glBlendEquation( GL_FUNC_SUBTRACT ); + else if( mode == BLEND_SUBTRACT ) + GLExt.glBlendEquation( GL_FUNC_REVERSE_SUBTRACT ); else GLExt.glBlendEquation( GL_FUNC_ADD ); } @@ -1729,6 +1731,9 @@ void RageDisplay_OGL::SetBlendMode( BlendMode mode ) case BLEND_ADD: iSourceRGB = GL_SRC_ALPHA; iDestRGB = GL_ONE; break; + case BLEND_SUBTRACT: + iSourceRGB = GL_SRC_ALPHA; iDestRGB = GL_ONE_MINUS_SRC_ALPHA; + break; case BLEND_MODULATE: iSourceRGB = GL_ZERO; iDestRGB = GL_SRC_COLOR; break; diff --git a/src/RageTypes.cpp b/src/RageTypes.cpp index be98f32c86..5d9cffa7b3 100644 --- a/src/RageTypes.cpp +++ b/src/RageTypes.cpp @@ -74,6 +74,7 @@ static const char *BlendModeNames[] = { "Normal", "Add", + "Subtract", "Modulate", /* diff --git a/src/RageTypes.h b/src/RageTypes.h index 8603afaca6..54fb51fc97 100644 --- a/src/RageTypes.h +++ b/src/RageTypes.h @@ -9,6 +9,7 @@ enum BlendMode { BLEND_NORMAL, BLEND_ADD, + BLEND_SUBTRACT, BLEND_MODULATE, BLEND_COPY_SRC, BLEND_ALPHA_MASK,