#include <texture.h>
Public Methods | |
TEXTURE () | |
~TEXTURE () | |
bool | LoadTGA () |
bool | LoadTGA (GLenum MagFilter, GLenum MinFilter, GLenum WrapS, GLenum WrapT, bool MipMap) |
Public Attributes | |
char | TexName [256] |
GLubyte * | ImageData |
GLuint | Bpp |
GLuint | Width |
GLuint | Height |
GLuint | TexID |
float | Vertex1_x |
float | Vertex1_y |
float | Vertex2_x |
float | Vertex2_y |
float | Vertex3_x |
float | Vertex3_y |
|
Definition at line 5 of file texture.cpp.
00006 { 00007 } |
|
Definition at line 9 of file texture.cpp.
00010 { 00011 } |
|
Definition at line 18 of file texture.cpp. References Bpp, Height, ImageData, TexID, TexName, and Width.
00019 { 00020 GLubyte TGAheader[12]={0,0,2,0,0,0,0,0,0,0,0,0}; // Uncompressed TGA Header 00021 GLubyte TGAcompare[12]; // Used To Compare TGA Header 00022 GLubyte header[6]; // First 6 Useful Bytes From The Header 00023 GLuint bytesPerPixel; // Holds Number Of Bytes Per Pixel Used In The TGA File 00024 GLuint imageSize; // Used To Store The Image Size When Setting Aside Ram 00025 GLuint temp; // Temporary Variable 00026 GLuint type=GL_RGBA; // Set The Default GL Mode To RBGA (32 BPP) 00027 FILE *file = fopen(TexName, "rb"); // Open The TGA Fi 00028 if( file==NULL || // Does File Even Exist? 00029 fread(TGAcompare,1,sizeof(TGAcompare),file)!=sizeof(TGAcompare) || // Are There 12 Bytes To Read? 00030 memcmp(TGAheader,TGAcompare,sizeof(TGAheader))!=0 || // Does The Header Match What We Want? 00031 fread(header,1,sizeof(header),file)!=sizeof(header)) // If So Read Next 6 Header Bytes 00032 { 00033 if (file == NULL) // Did The File Even Exist? *Added Jim Strong* 00034 { 00035 MessageBox(NULL,"Image file was not found","Error",MB_OK|MB_ICONERROR); 00036 return false; // Return False 00037 } 00038 if (TGAcompare[2] == 1) 00039 MessageBox(NULL,"Image cannot be indexed color. \r\n Convert the image to RGB or RGBA.","Error",MB_OK|MB_ICONERROR); 00040 if (TGAcompare[2] == 3) 00041 MessageBox(NULL,"Image cannot be greyscale color. \r\n Convert the image to RGB or RGBA.","Error",MB_OK|MB_ICONERROR); 00042 if (TGAcompare[2] == 9 || TGAcompare[2] == 10) 00043 MessageBox(NULL,"Image cannot be compressed. \r\n Convert the image to an uncompressed format.","Error",MB_OK|MB_ICONERROR); 00044 fclose(file); // If Anything Failed, Close The File 00045 return false; // Return False 00046 } 00047 Width = header[1] * 256 + header[0]; // Determine The TGA Width (highbyte*256+lowbyte) 00048 Height = header[3] * 256 + header[2]; // Determine The TGA Height (highbyte*256+lowbyte) 00049 if ( Width <=0 || // Is The Width Less Than Or Equal To Zero 00050 Height <=0 || // Is The Height Less Than Or Equal To Zero 00051 (header[4]!=24 && header[4]!=32)) // Is The TGA 24 or 32 Bit? 00052 { 00053 fclose(file); // If Anything Failed, Close The File 00054 if (Width <=0 || Height <=0) 00055 MessageBox(NULL,"Image must have a width and height greater than 0","Error",MB_OK|MB_ICONERROR); 00056 if (header[4]!=24 && header[4]!=32) 00057 MessageBox(NULL,"Image must be 24 or 32 bit","Error",MB_OK|MB_ICONERROR); 00058 return false; // Return False 00059 } 00060 Bpp = header[4]; // Grab The TGA's Bits Per Pixel (24 or 32) 00061 bytesPerPixel = Bpp/8; // Divide By 8 To Get The Bytes Per Pixel 00062 imageSize = Width*Height*bytesPerPixel; // Calculate The Memory Required For The TGA Data 00063 ImageData = (GLubyte *)malloc(imageSize); // Reserve Memory To Hold The TGA Data 00064 if (ImageData == NULL || // Does The Storage Memory Exist? 00065 fread(ImageData, 1, imageSize, file)!=imageSize) // Does The Image Size Match The Memory Reserved? 00066 { 00067 if (ImageData!=NULL) // Was Image Data Loaded 00068 free(ImageData); // If So, Release The Image Data 00069 MessageBox(NULL,"Image load failed for unknown reason.","Error",MB_OK|MB_ICONERROR); 00070 fclose(file); // Close The File 00071 return false; // Return False 00072 } 00073 for (GLuint i=0; i<(GLuint)imageSize; i+=bytesPerPixel) // Loop Through The Image Data 00074 { // Swaps The 1st And 3rd Bytes ('R'ed and 'B'lue) 00075 temp = ImageData[i]; // Temporarily Store The Value At Image Data 'i' 00076 ImageData[i] = ImageData[i + 2]; // Set The 1st Byte To The Value Of The 3rd Byte 00077 ImageData[i + 2] = (GLubyte)temp; // Set The 3rd Byte To The Value In 'temp' (1st Byte Value) 00078 } 00079 fclose(file); // Close The File 00080 00081 // Build A Texture From The Data 00082 glGenTextures(1, &TexID); // Generate OpenGL texture IDs 00083 glBindTexture(GL_TEXTURE_2D, TexID); 00084 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); 00085 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); 00086 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, MagFilter); 00087 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, MinFilter); 00088 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, WrapS); 00089 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, WrapT); 00090 00091 if (Bpp==24) // Was The TGA 24 Bits 00092 { 00093 type=GL_RGB; // If So Set The 'type' To GL_RGB 00094 } 00095 glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); 00096 if (MipMap) 00097 gluBuild2DMipmaps(GL_TEXTURE_2D, type, Width, Height, type, GL_UNSIGNED_BYTE, ImageData); 00098 else 00099 glTexImage2D(GL_TEXTURE_2D, 0, type, Width, Height, 0, type, GL_UNSIGNED_BYTE, ImageData); 00100 free(ImageData); 00101 return true; // Texture Building Went Ok, Return True 00102 } |
|
Definition at line 13 of file texture.cpp. Referenced by LoadBSPLightmaps(), and SetGLTexture().
00014 { 00015 return this->LoadTGA(GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR_MIPMAP_LINEAR, GL_REPEAT, GL_REPEAT, 1); 00016 } |
|
Definition at line 20 of file texture.h. Referenced by LoadTGA(). |
|
Definition at line 22 of file texture.h. Referenced by LoadTGA(). |
|
Definition at line 19 of file texture.h. Referenced by LoadTGA(). |
|
Definition at line 23 of file texture.h. Referenced by CreateBouncy(), CreateRomanCandle(), CreateSparks(), InitializeBullets(), LoadTGA(), RenderBSP(), SetBrushPolygons(), and SetGLWorld(). |
|
Definition at line 18 of file texture.h. Referenced by LoadTGA(). |
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 21 of file texture.h. Referenced by LoadTGA(). |