use glBlendFuncSeparate for 50% correct dest alpha

This commit is contained in:
Glenn Maynard
2007-02-24 13:03:35 +00:00
parent 033becc25f
commit d5542f24cf
3 changed files with 10 additions and 1 deletions
+6 -1
View File
@@ -1596,6 +1596,7 @@ void RageDisplay_OGL::SetBlendMode( BlendMode mode )
}
int iSourceRGB, iDestRGB;
int iSourceAlpha = GL_ONE, iDestAlpha = GL_ONE_MINUS_SRC_ALPHA;
switch( mode )
{
case BLEND_NORMAL:
@@ -1615,11 +1616,15 @@ void RageDisplay_OGL::SetBlendMode( BlendMode mode )
break;
case BLEND_NO_EFFECT:
iSourceRGB = GL_ZERO; iDestRGB = GL_ONE;
iSourceAlpha = GL_ZERO; iSourceAlpha = GL_ONE;
break;
DEFAULT_FAIL( mode );
}
glBlendFunc( iSourceRGB, iDestRGB );
if( GLExt.glBlendFuncSeparate != NULL )
GLExt.glBlendFuncSeparate( iSourceRGB, iDestRGB, iSourceAlpha, iDestAlpha );
else
glBlendFunc( iSourceRGB, iDestRGB );
}
bool RageDisplay_OGL::IsZWriteEnabled() const
@@ -129,6 +129,9 @@ void GLExt_t::Load( LowLevelWindow *pWind )
LoadAllOrNothing( funcs, pWind);
}
if( HasExtension("GL_EXT_blend_func_separate") )
glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC) pWind->GetProcAddress("glBlendFuncSeparate");
if( HasExtension("GL_EXT_blend_subtract") )
glBlendEquation = (PFNGLBLENDEQUATIONPROC) pWind->GetProcAddress("glBlendEquation");
+1
View File
@@ -69,6 +69,7 @@ struct GLExt_t
PWSWAPINTERVALEXTPROC wglSwapIntervalEXT;
PFNGLCOLORTABLEPROC glColorTableEXT;
PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate;
PFNGLBLENDEQUATIONPROC glBlendEquation;
PFNGLCOLORTABLEPARAMETERIVPROC glGetColorTableParameterivEXT;
PFNGLACTIVETEXTUREARBPROC glActiveTextureARB;