000
09.09.2003, 13:00 Uhr
~me
Gast
|
Hallo
Ich hab schon seit mehreren Stunden ein Problem, welches ich auch lösen konnte.
nur das ich jetz ein neues hab
und das ist es: ich versuche ein OpenGL frame in eine Bitmap zu speichern erst hatte ich das Problem diese zu erzeugen so das man sie auch öffnen kann
das hab ich soweit geschaft, jedoch bleibt der inhalt schwarz !
hier mein code
C++: |
void __fastcall TForm1::Button24Click(TObject *Sender) {
int height = Form2->Height; int widht = Form2->Width; int chan = 3; long groesse= height*widht*chan;; unsigned char *pdaten = new unsigned char[groesse];
glReadPixels(0,0,widht, height,GL_RGB,GL_UNSIGNED_BYTE,pdaten) ;
setheader(chan, height , widht,groesse);
FILE *fp;
fp = fopen("d:\\test.bmp", "w+b"); if(fp == NULL) { Application->MessageBoxA("File failed",MB_OK); return; }
fwrite(&filehead,sizeof(filehead)-2,1,fp); fwrite(&bmpinfo,sizeof(bmpinfo),1,fp); fwrite(pdaten,groesse,1,fp);
Application->MessageBoxA("done","fertsch",MB_OK); fclose(fp);
delete[] pdaten ; } //--------------------------------------------------------------------------- void TForm1::setheader(int Channels ,int height , int widht) { unsigned char BitDepth = (Channels == 3 ? 24 : 32);
filehead.bfType = 0x4D42; filehead.bfSize = sizeof(BITMAPFILEHEADER)-2 + sizeof(BITMAPINFOHEADER) + height*widht*Channels; filehead.bfReserved1 = 0; filehead.bfReserved2 = 0; filehead.bfOffBits = sizeof(BITMAPFILEHEADER)-2 + sizeof(BITMAPINFOHEADER);
bmpinfo.biSize = sizeof(BITMAPINFOHEADER); bmpinfo.biWidth = Form2->Width; bmpinfo.biHeight = Form2->Height; bmpinfo.biPlanes = 1; bmpinfo.biBitCount = BitDepth; bmpinfo.biCompression = BI_RGB; bmpinfo.biSizeImage = 0; bmpinfo.biXPelsPerMeter = 0; bmpinfo.biYPelsPerMeter = 0; bmpinfo.biClrUsed = 0 ; bmpinfo.biClrImportant = 0; }
|
ich schreib das zwar mitm bcb, aber da es eh nich um komponenten vom bcb geht hab ich es hierrein geschreiben
und das ich da immer >>> sizeof(BITMAPFILEHEADER)-2 <<< das mach, liegt daran das der den header mit einer größe von 16 ausließt statt 14
ich hoff es findet sich jemand der auchn bissel von OpenGL versteht
mfg
--edit: cpp-tags Dieser Post wurde am 09.09.2003 um 13:34 Uhr von 0xdeadbeef editiert. |