mirror of
https://github.com/love2d/love.git
synced 2026-08-12 08:30:56 +02:00
Added blend mode "screen".
This commit is contained in:
@@ -144,6 +144,7 @@ StringMap<Graphics::BlendMode, Graphics::BLEND_MAX_ENUM>::Entry Graphics::blendM
|
||||
{ "subtractive", Graphics::BLEND_SUBTRACTIVE },
|
||||
{ "multiplicative", Graphics::BLEND_MULTIPLICATIVE },
|
||||
{ "premultiplied", Graphics::BLEND_PREMULTIPLIED },
|
||||
{ "screen", Graphics::BLEND_SCREEN },
|
||||
{ "replace", Graphics::BLEND_REPLACE },
|
||||
};
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@ public:
|
||||
BLEND_SUBTRACTIVE,
|
||||
BLEND_MULTIPLICATIVE,
|
||||
BLEND_PREMULTIPLIED,
|
||||
BLEND_SCREEN,
|
||||
BLEND_REPLACE,
|
||||
BLEND_MAX_ENUM
|
||||
};
|
||||
|
||||
@@ -642,6 +642,10 @@ void Graphics::setBlendMode(Graphics::BlendMode mode)
|
||||
state.srcRGB = state.srcA = GL_SRC_ALPHA;
|
||||
state.dstRGB = state.dstA = GL_ONE;
|
||||
break;
|
||||
case BLEND_SCREEN:
|
||||
state.srcRGB = state.srcA = GL_ONE;
|
||||
state.dstRGB = state.dstA = GL_ONE_MINUS_SRC_COLOR;
|
||||
break;
|
||||
case BLEND_REPLACE:
|
||||
default:
|
||||
state.srcRGB = state.srcA = GL_ONE;
|
||||
@@ -669,6 +673,8 @@ Graphics::BlendMode Graphics::getBlendMode() const
|
||||
return BLEND_MULTIPLICATIVE;
|
||||
else if (state.srcRGB == GL_ONE && state.dstRGB == GL_ONE_MINUS_SRC_ALPHA)
|
||||
return BLEND_PREMULTIPLIED;
|
||||
else if (state.srcRGB == GL_ONE && state.dstRGB == GL_ONE_MINUS_SRC_COLOR)
|
||||
return BLEND_SCREEN;
|
||||
else if (state.srcRGB == GL_ONE && state.dstRGB == GL_ZERO)
|
||||
return BLEND_REPLACE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user