Add "combine" color mode, for colorizing images (see https://love2d.org/forums/viewtopic.php?f=4&t=7648 )

This commit is contained in:
Bill Meltsner
2012-01-26 15:00:40 -05:00
parent a0be14869f
commit 8f781e9f13
3 changed files with 10 additions and 1 deletions
+1
View File
@@ -130,6 +130,7 @@ namespace graphics
{
{ "replace", Graphics::COLOR_REPLACE },
{ "modulate", Graphics::COLOR_MODULATE },
{ "combine", Graphics::COLOR_COMBINE },
};
StringMap<Graphics::ColorMode, Graphics::COLOR_MAX_ENUM> Graphics::colorModes(Graphics::colorModeEntries, sizeof(Graphics::colorModeEntries));
+1
View File
@@ -62,6 +62,7 @@ namespace graphics
{
COLOR_MODULATE = 1,
COLOR_REPLACE,
COLOR_COMBINE,
COLOR_MAX_ENUM
};
+8 -1
View File
@@ -530,6 +530,11 @@ namespace opengl
{
if (mode == COLOR_MODULATE)
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
else if (mode == COLOR_COMBINE) {
glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_ADD_SIGNED);
glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
}
else // mode = COLOR_REPLACE
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
}
@@ -567,7 +572,9 @@ namespace opengl
if (mode == GL_MODULATE)
return COLOR_MODULATE;
else // // mode == GL_REPLACE
else if (mode == GL_COMBINE)
return COLOR_COMBINE;
else // mode == GL_REPLACE
return COLOR_REPLACE;
}