add alpha channel to every possible blend mode

This commit is contained in:
Matthias Mailänder
2015-04-19 08:18:31 +02:00
parent 1b31001661
commit 63e4d40770
8 changed files with 25 additions and 34 deletions

View File

@@ -208,7 +208,7 @@ namespace OpenRA.Renderer.Sdl2
ErrorHandler.CheckGlError();
}
public void SetBlendMode(BlendMode mode)
public void SetBlendMode(BlendMode mode, float alpha = 1f)
{
GL.BlendEquation(BlendEquationMode.FuncAdd);
ErrorHandler.CheckGlError();
@@ -246,26 +246,11 @@ namespace OpenRA.Renderer.Sdl2
ErrorHandler.CheckGlError();
GL.BlendFunc(BlendingFactorSrc.OneMinusDstColor, BlendingFactorDest.One);
break;
case BlendMode.Translucency25:
case BlendMode.Translucency:
GL.Enable(EnableCap.Blend);
ErrorHandler.CheckGlError();
GL.BlendFunc(BlendingFactorSrc.OneMinusConstantAlpha, BlendingFactorDest.One);
ErrorHandler.CheckGlError();
GL.BlendColor(1f, 1f, 1f, 0.25f);
break;
case BlendMode.Translucency50:
GL.Enable(EnableCap.Blend);
ErrorHandler.CheckGlError();
GL.BlendFunc(BlendingFactorSrc.OneMinusConstantAlpha, BlendingFactorDest.One);
ErrorHandler.CheckGlError();
GL.BlendColor(1f, 1f, 1f, 0.5f);
break;
case BlendMode.Translucency75:
GL.Enable(EnableCap.Blend);
ErrorHandler.CheckGlError();
GL.BlendFunc(BlendingFactorSrc.OneMinusConstantAlpha, BlendingFactorDest.One);
ErrorHandler.CheckGlError();
GL.BlendColor(1f, 1f, 1f, 0.75f);
break;
case BlendMode.Multiplicative:
GL.Enable(EnableCap.Blend);
@@ -279,6 +264,9 @@ namespace OpenRA.Renderer.Sdl2
break;
}
if (alpha != 1f)
GL.BlendColor(1f, 1f, 1f, alpha);
ErrorHandler.CheckGlError();
}