Frage

Alle,

Ich versuche, eine BMP-Datei in ein GLubyte Array zu laden (ohne aux).

Es ist unglaublich, wie das, was ich dachte, eine triviale Aufgabe Stunden meiner Zeit aufsaugt gewesen wäre, ist.

scheinen kann nicht alles auf Google zu finden!

Das ist, was ich gehackt zusammen, aber es ist nicht ganz arbeiten:

// load texture

GLubyte *customTexture;

string fileName("C:\\Development\\Visual Studio 2008\\Projects\\OpenGL_Test\\Crate.bmp");

// Use LoadImage() to get the image loaded into a DIBSection
HBITMAP hBitmap = (HBITMAP)LoadImage( NULL, (LPCTSTR)const_cast<char*>(fileName.c_str()), IMAGE_BITMAP, 0, 0, 
LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE );

customTexture = new GLubyte[3*256*256]; // size should be the size of the .bmp file

GetBitmapBits(hBitmap, 3*256*256, (LPVOID) customTexture);

GetBitmapDimensionEx(hBitmap,&szBitmap);

Was passiert, ist der Aufruf von Loadimage scheint nicht definierten Wert zu zurückkehren (? NULL Ich bin, um herauszufinden, nicht in der Lage, wenn es tatsächlich ist die bmp Laden oder nicht - etwas verwirrt).

Im Moment bin BMPs roh dann bin Umwandlung es ist alles andere als einfach.

Wer hat besser und saubere Schnipsel?

War es hilfreich?

Lösung

LoadImage() können nur Bitmaps laden, die mit der Ressource-Compiler in die ausführbare Datei eingebettet sind - es kann keine externen Bitmaps aus dem Dateisystem geladen werden. Glücklicherweise sind die Bitmap-Dateien ganz einfach selbst zu lesen. Siehe Wikipedia für eine Beschreibung des Dateiformats.

Sie einfach die Datei öffnen, wie Sie es mit einer anderen Datei ( wichtig : Öffnen Sie es in Binär-Modus, dh mit der "rb" Option fopen oder die ios::binary Flag den C ++ ifstream verwenden), lesen Sie in die Bitmap-Dimensionen und in den Rohpixeldaten lesen.

Andere Tipps

Es ist eine gemeinsame Aufgabe, deshalb glaux unter anderem Sie Funktionen für sie gibt.

ein Bitmap zu lesen, ist eine triviale Angelegenheit, vor allem, wenn es nur eine Tiefe / bpp ist zu berücksichtigen.

Siehe auch diese Frage .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top