61 lines
1.8 KiB
C++
Executable File
61 lines
1.8 KiB
C++
Executable File
#include "tex_.h"
|
|
#include <GL/glaux.h>
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
|
|
AUX_RGBImageRec * LoadBMP(char * filename);
|
|
|
|
int tex_load(char * filename, unsigned int *texture) // Load Bitmaps And Convert To Textures
|
|
{
|
|
int Status=FALSE; // Status Indicator
|
|
|
|
AUX_RGBImageRec *TextureImage[1]; // Create Storage Space For The Texture
|
|
|
|
memset(TextureImage,0,sizeof(void *)*1); // Set The Pointer To NULL
|
|
|
|
// Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit
|
|
if (TextureImage[0]=LoadBMP(filename))
|
|
{
|
|
Status=TRUE; // Set The Status To TRUE
|
|
|
|
glGenTextures(1, texture); // Create The Texture
|
|
|
|
// Typical Texture Generation Using Data From The Bitmap
|
|
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);
|
|
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
AUX_RGBImageRec *LoadBMP(char *Filename) // Loads A Bitmap Image
|
|
{
|
|
FILE *File=NULL; // File Handle
|
|
|
|
if (!Filename) // Make Sure A Filename Was Given
|
|
{
|
|
return NULL; // If Not Return NULL
|
|
}
|
|
|
|
File=fopen(Filename,"r"); // Check To See If The File Exists
|
|
|
|
if (File) // Does The File Exist?
|
|
{
|
|
fclose(File); // Close The Handle
|
|
return auxDIBImageLoad(Filename); // Load The Bitmap And Return A Pointer
|
|
}
|
|
|
|
return NULL; // If Load Failed Return NULL
|
|
} |