Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » bitmap erzeugen "mit inhalt"

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.09.2003, 13:02 Uhr
virtual
Sexiest Bit alive
(Operator)



Anm.: Mir fällt kein passendes Forum ein, in C++ hat es jedenfalls nix zu suchen. Wer was passendes weiß, bitte moven
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 09.09.2003 um 13:03 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.09.2003, 14:10 Uhr
mike
Pinguinhüpfer
(Operator)


Hmm. Klingt nach Borland C++ Builder - bin mir aber net ganz sicher
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.09.2003, 10:00 Uhr
~me
Gast


ok habs, das er jetz die datei richtig erstellt und auch was anzeigt

hab einfach selber den Fileheader, ohne die struktur BITMAPFILEHEADER zu benutzen, in die datei geschrieben

if you want some done right, do it yourself

naja die farben stimmen nur nich ganz

for(unsigned int datenID = 0; datenID < groesse; datenID += 3)
{
point = pdaten[datenID];
pdaten[datenID] = pdaten[datenID+2];
pdaten[datenID+2] = point;
}

^^ das sollte sie eigentlich von RGB nach BGR umwandeln, das ergebnis sieht nur nich ganz richtig aus

so grau mit schwarzen streifen, vll weiß ja jemand wies richtig sein müsste


ähm wenn ihr nicht wisst wo n thread hin passt lasst ihn doch einfach da wo er is
ihr nehmt das voll zu genau un das is voll schrecklich wie das ausartet

^^ - das is für die die antworten suchen nich so toll
und für die entwicklung eines forums ist es auch nich vorteilhaft << würd ich dazu sagen


ich will ja schließlich nur ma ne antwort zum thema


mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.09.2003, 15:57 Uhr
~me
Gast


also nur zur info habs geschaft

aber sagt mal löscht ihr meine posts ? (:rofl
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.09.2003, 17:29 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
soweit ich geshen hab war das ein Doppelposting! Was das vorhergehende betrifft:
- Verschieben macht Sinn, sonst brauchen wir nur ein Forum.
- Verschobene Threads werden eigentlich immer verlinkt.
- Die Suchfunktion ist manchmal hilfreich (hatte selbst mal einen Beitrag über das Speichern eines Bitmaps vefasst, mit etwas Anpassung an die VCL läuft
das auch).
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.09.2003, 07:37 Uhr
~me
Gast


kann es sein das ihr noch probleme habt ?

ich kann nämlich immer nur die ersten 3 threads lesen und wenn ich dann was gepostet hab seh ich die restlichen auch ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.09.2003, 12:11 Uhr
~me
Gast


jetz gehts anscheind

und mein prob is auch gelößt
hab einfach 4 chan fürs bitmap genommen
und mit GL_RGBA eingelesen

glReadPixels(0,0,widht, height,GL_RGBA,GL_UNSIGNED_BYTE,pdaten) ;

naja



mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: