load Bitmaps in OpenGL
-
Hi,
Mit dieser Funktion lade ich ein BMP-File
unsigned char* LoadBitmapFile (char* filename, BITMAPINFOHEADER* bitmapInfoHeader) { unsigned int imageIdx; FILE* filePtr; BITMAPFILEHEADER bitmapFileHeader; unsigned char *bitmapImage; unsigned char tempRGB; filePtr = fopen (filename, "rb"); if (filePtr == NULL) { return NULL; } fread (&bitmapFileHeader, sizeof (BITMAPFILEHEADER), 1, filePtr); if (bitmapFileHeader.bfType != BITMAP_ID) { fclose (filePtr); return NULL; } fread (bitmapInfoHeader, sizeof (BITMAPINFOHEADER), 1, filePtr); fseek (filePtr, bitmapFileHeader.bfOffBits, SEEK_SET); bitmapImage = (unsigned char*) malloc (bitmapInfoHeader->biSizeImage); if (!bitmapImage) { free (bitmapImage); fclose (filePtr); return NULL; } fread (bitmapImage, 1, bitmapInfoHeader->biSizeImage, filePtr); if (bitmapImage == NULL) { fclose (filePtr); return NULL; } for (imageIdx = 0; imageIdx < bitmapInfoHeader->biSizeImage; imageIdx += 3) { tempRGB = bitmapImage[imageIdx]; bitmapImage[imageIdx] = bitmapImage[imageIdx + 2]; bitmapImage[imageIdx + 2] = tempRGB; } fclose (filePtr); return bitmapImage; }
Nach dem Laden will ich es darstellen:
if (bitmapData != NULL) { glPixelStorei (GL_UNPACK_ALIGNMENT, 4); glRasterPos2i (200, 200); glDrawPixels (bitmapInfoHeader.biWidth, bitmapInfoHeader.biHeight, GL_RGB, GL_UNSIGNED_BYTE, bitmapData); }
Doch wenn ich die (vorhandene) Bitmap lade, kehrt das Programm sofort in Windows zurück.
Worin liegt mein Fehler?
-
liefert diese funktion einen gültigen pointer zurück ?
was sagt glGetError() dazu ?
was sagt windows dazu GetLastError() ?
wo bricht dein programm ab ?du müsstest etwas genauer dein prob beschreiben.