Only pad when needed

This commit is contained in:
Bart van Strien
2011-06-10 15:03:27 +02:00
parent 03a368c190
commit d613505a77
2 changed files with 37 additions and 1 deletions
+34 -1
View File
@@ -29,7 +29,6 @@ namespace graphics
{
namespace opengl
{
Image::Image(love::image::ImageData * data)
: width((float)(data->getWidth())), height((float)(data->getHeight())), texture(0)
{
@@ -276,6 +275,14 @@ namespace opengl
}
bool Image::loadVolatile()
{
if (GLEE_ARB_texture_non_power_of_two)
return loadVolatileNPOT();
else
return loadVolatilePOT();
}
bool Image::loadVolatilePOT()
{
glGenTextures(1,(GLuint*)&texture);
glBindTexture(GL_TEXTURE_2D, texture);
@@ -321,6 +328,32 @@ namespace opengl
return true;
}
bool Image::loadVolatileNPOT()
{
glGenTextures(1,(GLuint*)&texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D,
0,
GL_RGBA8,
(GLsizei)width,
(GLsizei)height,
0,
GL_RGBA,
GL_UNSIGNED_BYTE,
data->getData());
setFilter(settings.filter);
setWrap(settings.wrap);
return true;
}
void Image::unloadVolatile()
{
settings.filter = getFilter();