1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| #include "BMP.h"
AUX_RGBImageRec* EGELoadBMP(char *Filename)
{
FILE *Fileptr=NULL;
AUX_RGBImageRec *Bitmap;
/*Verify that a filename has been writen*/
if (!Filename)
{
return NULL;
}
Fileptr=fopen(Filename,"r");
/*Verify that the file exist*/
if (Fileptr)
{
fclose(Fileptr);
/*Load the bitmap and return a pointer*/
Bitmap=auxDIBImageLoad(Filename);
return Bitmap;
}
else
{
return NULL;
}
return NULL;
}
GLuint LoadGLTextures(char *Filename)
{
//int Status=FALSE;
AUX_RGBImageRec *TextureImage[1];
GLuint texture;
memset(TextureImage,0,sizeof(void *)*1);
// Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit
if (TextureImage[0]=EGELoadBMP(Filename))
{
//Status=TRUE;
/*Allocate memory for the texture*/
glGenTextures(1, &texture);
/*Set the bitmap as current texture*/
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); // Linear Filtering
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); // Linear Filtering
}
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
if (TextureImage[0]) // If Texture Exists
{
if (TextureImage[0]->data) // If Texture Image Exists
{
free(TextureImage[0]->data); // Free The Texture Image Memory
}
free(TextureImage[0]); // Free The Image Structure
}
//return Status; // Return The Status
return texture;
} |
Partager