www.pudn.com > ATimeToKill.rar > texture.h
#ifndef __TEXTURE_H #define __TEXTURE_H #define WIN32_LEAN_AND_MEAN #define WIN32_EXTRA_LEAN /* TEXTURE.H The CTexture class OpenGL Game Programming Author: Kevin Hawkins Date: 3/29/2001 Description: The CTexture class represents a single texture object in the engine. To load a texture, you only need to call the LoadTexture() function. */ #include#include #include #include #include #include #define BITMAP_ID 0x4D42 // the universal bitmap ID enum texTypes_t { PCX, BMP, TGA }; // only partial pcx file header typedef struct { unsigned char manufacturer; unsigned char version; unsigned char encoding; unsigned char bits; unsigned char xMin; unsigned char yMin; unsigned char xMax; unsigned char yMax; unsigned char *palette; } PCXHEADER; typedef struct { unsigned char imageTypeCode; short int imageWidth; short int imageHeight; unsigned char bitCount; } TGAHEADER; class CTexture { private: long int scaledWidth; long int scaledHeight; unsigned char *palette; unsigned char *LoadBitmapFile(char *filename, BITMAPINFOHEADER *bitmapInfoHeader); unsigned char *LoadBitmapFileWithAlpha(char *filename, BITMAPINFOHEADER *bitmapInfoHeader); unsigned char *LoadPCXFile(char *filename, PCXHEADER *pcxHeader); unsigned char *LoadTGAFile(char *filename, TGAHEADER *tgaHeader); void LoadPCXTexture(char *filename); void LoadBMPTexture(char *filename); void LoadTGATexture(char *filename); public: texTypes_t textureType; unsigned char tgaImageCode; // 0 = not TGA image, 2 = color, 3 = greyscale int width; int height; int bitDepth; unsigned int texID; unsigned char *data; CTexture() { data = NULL; palette = NULL; } ~CTexture() { Unload(); } void LoadTexture(char *filename); void Unload() { glDeleteTextures(1, &texID); if (data != NULL) free(data); if (palette != NULL) free(palette); data = NULL; palette = NULL; } }; #endif