HTMLooser
Neues Mitglied
Hallo,
ich möchte gerne in c++ grafiken laden.
das ist bisher kein problem.
aber nun möchte ich teiltransparente dateien im png format statt bmp laden,
aber hab keine idee wie das gehen soll.
kann mir da jemand helfen?
hier mein
ich möchte gerne in c++ grafiken laden.
das ist bisher kein problem.
aber nun möchte ich teiltransparente dateien im png format statt bmp laden,
aber hab keine idee wie das gehen soll.
kann mir da jemand helfen?
hier mein
Code:
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]#include[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]<windows.h>[/COLOR][/SIZE][/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]#include[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]<stdio.h>[/COLOR][/SIZE][/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]#include[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]<glu.h>[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#008000]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]#include[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]<gl\gl.h>[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#008000]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]#include[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]<glaux.h>[/COLOR][/SIZE][/COLOR][/SIZE]
[SIZE=2][COLOR=#008000]
[/COLOR][/SIZE][SIZE=2]HGLRC hRC=NULL; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Der OpenGL Rendering Context[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]HDC hDC=NULL; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Gerte Kontext[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]HWND hWnd=NULL; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Verweist spter auf den Windows Handle[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]HINSTANCE hInstance; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Die Instanz der Anwendung[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]bool[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] keys[256]; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Vektor (Array) der den Status [/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// einzelner Tasten enthlt [/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// (gedrckt/nicht gedrckt)[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]bool[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] active=TRUE; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Wenn active FALSE ist, wurde das [/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Fenster vom Benutzer minimiert.[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]bool[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] fullscreen=TRUE; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Luft das Programm im Vollbildmodus [/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// oder nicht?[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] jump;[/SIZE]
[SIZE=2]BOOL wp; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// W Pressed?[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]BOOL ap; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// A Pressed?[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]BOOL sp; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// S Pressed?[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]BOOL dp; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// D Pressed?[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]GLfloat xheight; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Rotation um die X-Achse[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]GLfloat ywidth; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Rotation um die Y-Achse[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]GLuint texture[1]; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Texturspeicher[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); [/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// WndProc wird deklariert[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]GLvoid ReSizeGLScene(GLsizei width, GLsizei height) [/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Initialisierung des OpenGL-Fensters[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]{[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (height==0)[/SIZE]
[SIZE=2]{ [/SIZE]
[SIZE=2]height=1; [/SIZE]
[SIZE=2]}[/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// height darf nicht 0 sein, damit es im spteren [/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Programmablauf nicht zu einer Division durch 0 kommt.[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]glViewport(0, 0, width, height);[/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Hier wird der Mittelpunkt auf den die Perspektive zuluft [/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// zurckgesetzt.[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]glMatrixMode(GL_PROJECTION); [/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Hier wird die Projektionsmatrix festgelegt[/COLOR][/SIZE]
[/COLOR][/SIZE]
[SIZE=2]glLoadIdentity(); [/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// und angepasst[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f); [/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Hier wird die das Verhltnis der Hhe zur Breite bergeben[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// und der Verzerrungswinkel von 45 Grad bergeben[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]glMatrixMode(GL_MODELVIEW); [/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Hier wird die sogenannte modelview-Matrix festgelegt[/COLOR][/SIZE]
[/COLOR][/SIZE]
[SIZE=2]glLoadIdentity(); [/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// und angepasst.[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]}[/SIZE]
[SIZE=2]AUX_RGBImageRec *LoadPNG([/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]char[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] *Filename) [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Ldt ein BMP[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]{[/SIZE]
[SIZE=2]FILE *File=NULL; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Das File Handle[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (!Filename) [/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Ist ein Dateiname bergeben worden?[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]{[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] NULL; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// offenbar nicht... Abbruch[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]}[/SIZE]
[SIZE=2]File=fopen(Filename,[/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"r"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]); [/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Versuch die Datei zu ffnen[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (File) [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Existiert die Datei?[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]{[/SIZE]
[SIZE=2]fclose(File); [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Datei schlieen[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] auxDIBImageLoad(Filename); [/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// BMP laden und Zeiger (Pointer) zurckgeben, [/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// der auf die Bilddaten verweist[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]}[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] NULL; [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Laden hat nicht geklappt[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]}[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] LoadGLTextures() [/SIZE][SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Bitmaps laden und konvertieren[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]{[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] Status=FALSE; [/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Status ersteinmal auf FALSE setzen[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]AUX_RGBImageRec *TextureImage[1]; [/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Speicherplatz fr die Textur schaffen[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]memset(TextureImage,0,[/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]sizeof[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] *)*1); [/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]//Vorher sichergehen das dieser auch leer ist[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (TextureImage[0]=LoadBMP([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"auge.bmp"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]))[/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]// Bitmap laden[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]{[/SIZE]