Browse Source

Add blend mode 'none' (issue #536)

Bart van Strien 12 years ago
parent
commit
501beb7d02

+ 1 - 0
src/modules/graphics/Graphics.cpp

@@ -124,6 +124,7 @@ StringMap<Graphics::BlendMode, Graphics::BLEND_MAX_ENUM>::Entry Graphics::blendM
 	{ "subtractive", Graphics::BLEND_SUBTRACTIVE },
 	{ "multiplicative", Graphics::BLEND_MULTIPLICATIVE },
 	{ "premultiplied", Graphics::BLEND_PREMULTIPLIED },
+	{ "none", Graphics::BLEND_NONE },
 };
 
 StringMap<Graphics::BlendMode, Graphics::BLEND_MAX_ENUM> Graphics::blendModes(Graphics::blendModeEntries, sizeof(Graphics::blendModeEntries));

+ 1 - 0
src/modules/graphics/Graphics.h

@@ -57,6 +57,7 @@ public:
 		BLEND_SUBTRACTIVE,
 		BLEND_MULTIPLICATIVE,
 		BLEND_PREMULTIPLIED,
+		BLEND_NONE,
 		BLEND_MAX_ENUM
 	};
 

+ 4 - 0
src/modules/graphics/opengl/Graphics.cpp

@@ -549,6 +549,8 @@ void Graphics::setBlendMode(Graphics::BlendMode mode)
 		glBlendFunc(GL_DST_COLOR, GL_ZERO);
 	else if (mode == BLEND_PREMULTIPLIED)
 		glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+	else if (mode == BLEND_NONE)
+		glBlendFunc(GL_ONE, GL_ZERO);
 	else // mode == BLEND_ADDITIVE || mode == BLEND_SUBTRACTIVE
 		glBlendFunc(GL_SRC_ALPHA, GL_ONE);
 }
@@ -584,6 +586,8 @@ Graphics::BlendMode Graphics::getBlendMode()
 		return BLEND_MULTIPLICATIVE;
 	else if (src == GL_ONE && dst == GL_ONE_MINUS_SRC_ALPHA)  // && equation == GL_FUNC_ADD
 		return BLEND_PREMULTIPLIED;
+	else if (src == GL_ONE && dst == GL_ZERO)
+		return BLEND_NONE;
 
 	return BLEND_MAX_ENUM; // Should never be reached.
 }