Fixed blending functions so that alpha is properly forwarded when rendered to a RenderImage
git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/branches/sfml2@1137 4e206d99-4929-0410-ac5d-dfc041789085
This commit is contained in:
parent
0704e242c0
commit
92e79b8123
@ -379,12 +379,22 @@ void Drawable::Draw(RenderTarget& Target) const
|
||||
{
|
||||
GLCheck(glEnable(GL_BLEND));
|
||||
|
||||
// We have to use glBlendFuncSeparate so that the resulting alpha is
|
||||
// not alpha², which is incorrect and would cause problems when rendering
|
||||
// alpha pixels to a RenderImage that would be in turn rendered to another render target
|
||||
switch (myBlendMode)
|
||||
{
|
||||
case Blend::Alpha : GLCheck(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); break;
|
||||
case Blend::Add : GLCheck(glBlendFunc(GL_SRC_ALPHA, GL_ONE)); break;
|
||||
case Blend::Multiply : GLCheck(glBlendFunc(GL_DST_COLOR, GL_ZERO)); break;
|
||||
default : break;
|
||||
case Blend::Alpha :
|
||||
GLCheck(glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA));
|
||||
break;
|
||||
case Blend::Add :
|
||||
GLCheck(glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE, GL_ONE, GL_ONE_MINUS_SRC_ALPHA));
|
||||
break;
|
||||
case Blend::Multiply :
|
||||
GLCheck(glBlendFuncSeparate(GL_DST_COLOR, GL_ZERO, GL_ONE, GL_ONE_MINUS_SRC_ALPHA));
|
||||
break;
|
||||
default :
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user