class Texture
{
public:
Texture();
~Texture();
void Delete();
void Use();
bool LoadBMP(char *filename);
bool Make(char *filename);
private:
unsigned int ID;
unsigned int width, height;
};
Texture::Texture()
{
ID = 0;
}
Texture::~Texture()
{
Delete();
}
void Texture::Delete()
{
if (ID)
{
glDeleteTextures (1, &ID);
ID = 0;
}
}
void Texture::Use()
{
glBindTexture (GL_TEXTURE_2D, ID);
}
bool Texture::Make(char *filename)
{
glGenTextures (1, &ID);
//ID++;
glBindTexture (GL_TEXTURE_2D, ID);
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
return true;
}
bool Texture::LoadBMP(char*filename)
{
FILE*Image;
AUX_RGBImageRec *BMP;
if (!filename)
{
MessageBox (NULL, "El nombre del archivo no es valido", "Error", MB_OK | MB_ICONEXCLAMATION);
return false;
}
Image = fopen (filename, "r");
if (!Image)
{
MessageBox (NULL, "El archivo no existe", "Error", MB_OK | MB_ICONEXCLAMATION);
return false;
}
fclose (Image);
Make (filename);
BMP = auxDIBImageLoad (filename);
width = BMP->sizeX;
height = BMP->sizeY;
glTexImage2D (GL_TEXTURE_2D, 0, 3, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, BMP->data);
delete BMP->data;
delete BMP;
return true;
}