Browse Source

Fix multiplicative blend mode.

vrld 13 years ago
parent
commit
e6711b2837
1 changed files with 2 additions and 2 deletions
  1. 2 2
      src/modules/graphics/opengl/Graphics.cpp

+ 2 - 2
src/modules/graphics/opengl/Graphics.cpp

@@ -546,7 +546,7 @@ void Graphics::setBlendMode(Graphics::BlendMode mode)
 	if (mode == BLEND_ALPHA)
 	if (mode == BLEND_ALPHA)
 		glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 		glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 	else if (mode == BLEND_MULTIPLICATIVE)
 	else if (mode == BLEND_MULTIPLICATIVE)
-		glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA);
+		glBlendFunc(GL_DST_COLOR, GL_ZERO);
 	else if (mode == BLEND_PREMULTIPLIED)
 	else if (mode == BLEND_PREMULTIPLIED)
 		glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
 		glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
 	else // mode == BLEND_ADDITIVE || mode == BLEND_SUBTRACTIVE
 	else // mode == BLEND_ADDITIVE || mode == BLEND_SUBTRACTIVE
@@ -585,7 +585,7 @@ Graphics::BlendMode Graphics::getBlendMode()
 		return BLEND_ADDITIVE;
 		return BLEND_ADDITIVE;
 	else if (src == GL_SRC_ALPHA && dst == GL_ONE_MINUS_SRC_ALPHA)  // && equation == GL_FUNC_ADD
 	else if (src == GL_SRC_ALPHA && dst == GL_ONE_MINUS_SRC_ALPHA)  // && equation == GL_FUNC_ADD
 		return BLEND_ALPHA;
 		return BLEND_ALPHA;
-	else if (src == GL_DST_COLOR && dst == GL_ONE_MINUS_SRC_ALPHA)  // && equation == GL_FUNC_ADD
+	else if (src == GL_DST_COLOR && dst == GL_ZERO)  // && equation == GL_FUNC_ADD
 		return BLEND_MULTIPLICATIVE;
 		return BLEND_MULTIPLICATIVE;
 	else if (src == GL_ONE && dst == GL_ONE_MINUS_SRC_ALPHA)  // && equation == GL_FUNC_ADD
 	else if (src == GL_ONE && dst == GL_ONE_MINUS_SRC_ALPHA)  // && equation == GL_FUNC_ADD
 		return BLEND_PREMULTIPLIED;
 		return BLEND_PREMULTIPLIED;