Add Subtractive blend mode for d2k move-flash.

This commit is contained in:
Paul Chote
2013-10-26 17:39:44 +13:00
parent 5cd29f999d
commit 84ffb0de05
2 changed files with 11 additions and 1 deletions

View File

@@ -32,7 +32,7 @@ namespace OpenRA.FileFormats.Graphics
IGraphicsDevice Create( Size size, WindowMode windowMode ); IGraphicsDevice Create( Size size, WindowMode windowMode );
} }
public enum BlendMode { None, Alpha, Additive } public enum BlendMode { None, Alpha, Additive, Subtractive }
public interface IGraphicsDevice public interface IGraphicsDevice
{ {

View File

@@ -154,6 +154,9 @@ namespace OpenRA.Renderer.SdlCommon
public void SetBlendMode(BlendMode mode) public void SetBlendMode(BlendMode mode)
{ {
Gl.glBlendEquation(Gl.GL_FUNC_ADD);
ErrorHandler.CheckGlError();
switch (mode) switch (mode)
{ {
case BlendMode.None: case BlendMode.None:
@@ -169,6 +172,13 @@ namespace OpenRA.Renderer.SdlCommon
ErrorHandler.CheckGlError(); ErrorHandler.CheckGlError();
Gl.glBlendFunc(Gl.GL_ONE, Gl.GL_ONE); Gl.glBlendFunc(Gl.GL_ONE, Gl.GL_ONE);
break; break;
case BlendMode.Subtractive:
Gl.glEnable(Gl.GL_BLEND);
ErrorHandler.CheckGlError();
Gl.glBlendFunc(Gl.GL_ONE, Gl.GL_ONE);
ErrorHandler.CheckGlError();
Gl.glBlendEquation(Gl.GL_FUNC_REVERSE_SUBTRACT);
break;
} }
ErrorHandler.CheckGlError(); ErrorHandler.CheckGlError();
} }