427a764: subtractive blend (OpenGL only for now) [Glenn Maynard]
I was looking into writing the equivalent Direct3D code; still not 100% sure if my code is right, so it stays local for now.
This commit is contained in:
@@ -1715,6 +1715,8 @@ void RageDisplay_OGL::SetBlendMode( BlendMode mode )
|
|||||||
{
|
{
|
||||||
if( mode == BLEND_INVERT_DEST )
|
if( mode == BLEND_INVERT_DEST )
|
||||||
GLExt.glBlendEquation( GL_FUNC_SUBTRACT );
|
GLExt.glBlendEquation( GL_FUNC_SUBTRACT );
|
||||||
|
else if( mode == BLEND_SUBTRACT )
|
||||||
|
GLExt.glBlendEquation( GL_FUNC_REVERSE_SUBTRACT );
|
||||||
else
|
else
|
||||||
GLExt.glBlendEquation( GL_FUNC_ADD );
|
GLExt.glBlendEquation( GL_FUNC_ADD );
|
||||||
}
|
}
|
||||||
@@ -1729,6 +1731,9 @@ void RageDisplay_OGL::SetBlendMode( BlendMode mode )
|
|||||||
case BLEND_ADD:
|
case BLEND_ADD:
|
||||||
iSourceRGB = GL_SRC_ALPHA; iDestRGB = GL_ONE;
|
iSourceRGB = GL_SRC_ALPHA; iDestRGB = GL_ONE;
|
||||||
break;
|
break;
|
||||||
|
case BLEND_SUBTRACT:
|
||||||
|
iSourceRGB = GL_SRC_ALPHA; iDestRGB = GL_ONE_MINUS_SRC_ALPHA;
|
||||||
|
break;
|
||||||
case BLEND_MODULATE:
|
case BLEND_MODULATE:
|
||||||
iSourceRGB = GL_ZERO; iDestRGB = GL_SRC_COLOR;
|
iSourceRGB = GL_ZERO; iDestRGB = GL_SRC_COLOR;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ static const char *BlendModeNames[] =
|
|||||||
{
|
{
|
||||||
"Normal",
|
"Normal",
|
||||||
"Add",
|
"Add",
|
||||||
|
"Subtract",
|
||||||
"Modulate",
|
"Modulate",
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ enum BlendMode
|
|||||||
{
|
{
|
||||||
BLEND_NORMAL,
|
BLEND_NORMAL,
|
||||||
BLEND_ADD,
|
BLEND_ADD,
|
||||||
|
BLEND_SUBTRACT,
|
||||||
BLEND_MODULATE,
|
BLEND_MODULATE,
|
||||||
BLEND_COPY_SRC,
|
BLEND_COPY_SRC,
|
||||||
BLEND_ALPHA_MASK,
|
BLEND_ALPHA_MASK,
|
||||||
|
|||||||
Reference in New Issue
Block a user