This is supposedly very simple to do, yet I can't get it to work. It uses OpenGL functions to actually draw the bitmap but i still think it's more appropriate in the C++ board. Anyway this doesn't work and I'm wondering if I did anything wrong
code for loading the bitmap:
code used in main to actually draw the bitmap (this is opengl specific stuff):Code:byte * LoadBMP(char * filename, BITMAPINFOHEADER *bih) { byte * imageData; //THIS WILL END UP BEING OUR IMAGE READ FROM THE FILE ifstream fin(filename, ios::in | ios::binary | ios::nocreate); //OPEN FILE if(fin.fail()) return NULL; fin.seekg(0, ios::end); long filesize = fin.tellg(); fin.seekg(0, ios::beg); byte * buffer = new byte[filesize]; //ALLOCATE TEMPORARY BUFFER fin.read(buffer, filesize); fin.close(); const byte * ptr = buffer; //CREATE POINTER TO BUFFER TO EXTRACT STUFF FROM THE FILE BITMAPFILEHEADER * pHeader = (BITMAPFILEHEADER*)ptr; //EXTRACT THE BITMAPFILEHEADER TO CHECK TYPE ptr += sizeof(BITMAPFILEHEADER); //GO PAST BITMAPFILEHEADER IN FILE if(pHeader->bfType != BITMAP_ID) { //CHECK THE TYPE, DEFINED IN MAIN.H MessageBox(NULL, "BITMAP ID INVALID", "BITMAP ID INVALID", MB_OK); return NULL; } bih = (BITMAPINFOHEADER*) ptr; //EXTRACT OUR BITMAPINFOHEADER ptr += sizeof(BITMAPINFOHEADER); imageData = new byte[bih->biSizeImage]; imageData = (byte*)ptr; //EXTRACT ALL OF THE INFORMATION FOR THE IMAGE //SWAP THE R AND B VALUES OF THE IMAGE DATA return imageData; //RETURN IT }
this should be displaying something, albeit the fact that I should have switched the red and blue values with the current mode I'm using in drawpixels (supposedly with opengl 1.2 and later you can use GL_BGR to draw, but that enumerated type doesn't seem to exist).Code://globals byte * bitmap; BITMAPINFOHEADER bih; //... glRasterPos2i(100, 100); //START DRAWING AT THESE PIXELS glPixelStorei(GL_UNPACK_ALIGNMENT, 4); //SET MEMORY ALIGNMENT glDrawPixels(bih.biWidth, bih.biHeight, GL_RGB, GL_UNSIGNED_BYTE, bitmap); //DRAW STUFF!
thanks if anyone can help this poor soul



LinkBack URL
About LinkBacks



