skinsize = texture.sizeX;
GLuint type = GL_RGBA;
- if (texture.bpp == 24)
+ if (texture.bpp == 24) {
type = GL_RGB;
+ }
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
const int nb = texture.sizeY * texture.sizeX * (texture.bpp / 8);
data = (GLubyte*)malloc(nb * sizeof(GLubyte));
datalen = 0;
- for (int i = 0; i < nb; i++)
- if ((i + 1) % 4 || type == GL_RGB)
+ for (int i = 0; i < nb; i++) {
+ if ((i + 1) % 4 || type == GL_RGB) {
data[datalen++] = texture.data[i];
+ }
+ }
glTexImage2D(GL_TEXTURE_2D, 0, type, texture.sizeX, texture.sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
} else {
glTexImage2D(GL_TEXTURE_2D, 0, type, texture.sizeX, texture.sizeY, 0, type, GL_UNSIGNED_BYTE, texture.data);
glBindTexture(GL_TEXTURE_2D, id);
}
-TextureRes::TextureRes(const string& _filename, bool _hasMipmap):
- id(0), filename(_filename), hasMipmap(_hasMipmap), isSkin(false),
- skinsize(0), data(NULL), datalen(0)
+TextureRes::TextureRes(const string& _filename, bool _hasMipmap)
+ : id(0)
+ , filename(_filename)
+ , hasMipmap(_hasMipmap)
+ , isSkin(false)
+ , skinsize(0)
+ , data(NULL)
+ , datalen(0)
{
load();
}
-TextureRes::TextureRes(const string& _filename, bool _hasMipmap, GLubyte* array, int* skinsizep):
- id(0), filename(_filename), hasMipmap(_hasMipmap), isSkin(true),
- skinsize(0), data(NULL), datalen(0)
+TextureRes::TextureRes(const string& _filename, bool _hasMipmap, GLubyte* array, int* skinsizep)
+ : id(0)
+ , filename(_filename)
+ , hasMipmap(_hasMipmap)
+ , isSkin(true)
+ , skinsize(0)
+ , data(NULL)
+ , datalen(0)
{
load();
*skinsizep = skinsize;
- for (int i = 0; i < datalen; i++)
+ for (int i = 0; i < datalen; i++) {
array[i] = data[i];
+ }
}
TextureRes::~TextureRes()
void Texture::load(const string& filename, bool hasMipmap)
{
- destroy();
- tex = new TextureRes(Folders::getResourcePath(filename), hasMipmap);
+ tex.reset(new TextureRes(Folders::getResourcePath(filename), hasMipmap));
}
void Texture::load(const string& filename, bool hasMipmap, GLubyte* array, int* skinsizep)
{
- destroy();
- tex = new TextureRes(Folders::getResourcePath(filename), hasMipmap, array, skinsizep);
-}
-
-void Texture::destroy()
-{
- if (tex) {
- delete tex;
- tex = NULL;
- }
+ tex.reset(new TextureRes(Folders::getResourcePath(filename), hasMipmap, array, skinsizep));
}
void Texture::bind()
{
- if (tex)
+ if (tex) {
tex->bind();
- else
+ } else {
glBindTexture(GL_TEXTURE_2D, 0);
+ }
}