Code: Alles auswählen
#include <windows.h> // Header File für Windows
#include <stdio.h> // Header File für Standard Input/Output
#include <gl\gl.h> // Header File für OpenGL32 Library
#include <gl\glu.h> // Header File für GLu32 Library
#include <gl\glaux.h> // Header File für Glaux Library
extern _stdcall int PB_LoadGLTextures(char *ImageFile)
{
GLuint pTexName[1]
HBITMAP hBmp = (HBITMAP) LoadImage // Bitmap laden
( NULL, //
(LPCTSTR) ImageFile, // Dateiname
IMAGE_BITMAP, // Formathinweis
0, 0, // Gesamte Bitmap
LR_LOADFROMFILE // Ladeformat
| LR_CREATEDIBSECTION); //
if (hBmp == NULL) return FALSE; // Ladeprobleme....ok hören wir mal auf!
BITMAP BM; // Get bitmap info.
GetObject (hBmp,sizeof (BM),&BM); // WIN32-API Funktion
if (BM.bmBitsPixel != 24) // is das auch ein 24Bit-Bitmap?
return FALSE; // UNBRAUCHBAR hören wir mal auf
if (!*pTexName) //Textur schon vorhanden?
glGenTextures(1, &pTexName[0]); //Nee?,Hm... dann Namen gen.
else return FALSE; //Ja!,Hm... mist keine Doppeldef´s... also auch hier aufhören;
glBindTexture(GL_TEXTURE_2D,pTexName[0]);//Textur speich.
glPixelStorei(GL_UNPACK_ALIGNMENT,4); //Pixelablageart
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);//0-gesamte Textur
glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);//0-gesamte Textur
glPixelStorei(GL_UNPACK_SKIP_PIXELS,0);//0-gesamte Textur
glTexParameteri(GL_TEXTURE_2D, //Textur Parameter
GL_TEXTURE_MAG_FILTER, GL_LINEAR); //alt.GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MIN_FILTER, GL_LINEAR); //alt.GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_S, GL_REPEAT); //alt. GL_CLAMP
glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_WRAP_T, GL_REPEAT); //alt. GL_CLAMP
//Textur Umgebung def.
glTexEnvf(GL_TEXTURE_ENV,
GL_TEXTURE_ENV_MODE, GL_REPLACE); //Ersetzmodus
//Textur MIPMAP bilden
gluBuild2DMipmaps( // Anstelle von glTexImage2D!
GL_TEXTURE_2D, //Textur MIPMAP
3, //Anzahl Farbkomponenten
BM.bmWidth, BM.bmHeight, //Breite / Höhe Bitmap
GL_BGR_EXT, //Hinweis auf BGR Format
GL_UNSIGNED_BYTE, //Datenformat
BM.bmBits //Zeiger auf Bitmap
);
glBindTexture(GL_TEXTURE_2D, 0);//Texturablage beendet und fertig sind wir
return TRUE;
}