Added "mirroredrepeat" wrap mode.

This commit is contained in:
Alex Szpakowski
2014-12-22 19:16:36 -04:00
parent ff01e6e63b
commit 60eceadc0a
3 changed files with 16 additions and 24 deletions
+1
View File
@@ -121,6 +121,7 @@ StringMap<Texture::WrapMode, Texture::WRAP_MAX_ENUM>::Entry Texture::wrapModeEnt
{
{ "clamp", Texture::WRAP_CLAMP },
{ "repeat", Texture::WRAP_REPEAT },
{ "mirroredrepeat", Texture::WRAP_MIRRORED_REPEAT },
};
StringMap<Texture::WrapMode, Texture::WRAP_MAX_ENUM> Texture::wrapModes(Texture::wrapModeEntries, sizeof(Texture::wrapModeEntries));
+1
View File
@@ -44,6 +44,7 @@ public:
{
WRAP_CLAMP,
WRAP_REPEAT,
WRAP_MIRRORED_REPEAT,
WRAP_MAX_ENUM
};
+14 -24
View File
@@ -581,32 +581,22 @@ float OpenGL::setTextureFilter(graphics::Texture::Filter &f)
void OpenGL::setTextureWrap(const graphics::Texture::Wrap &w)
{
GLint gs, gt;
switch (w.s)
auto glWrapMode = [](Texture::WrapMode wmode) -> GLint
{
case Texture::WRAP_CLAMP:
gs = GL_CLAMP_TO_EDGE;
break;
case Texture::WRAP_REPEAT:
default:
gs = GL_REPEAT;
break;
}
switch (wmode)
{
case Texture::WRAP_CLAMP:
default:
return GL_CLAMP_TO_EDGE;
case Texture::WRAP_REPEAT:
return GL_REPEAT;
case Texture::WRAP_MIRRORED_REPEAT:
return GL_MIRRORED_REPEAT;
}
};
switch (w.t)
{
case Texture::WRAP_CLAMP:
gt = GL_CLAMP_TO_EDGE;
break;
case Texture::WRAP_REPEAT:
default:
gt = GL_REPEAT;
break;
}
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gs);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gt);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, glWrapMode(w.s));
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, glWrapMode(w.t));
}
int OpenGL::getMaxTextureSize() const