Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » OpenGL » DevIL mit Opengl

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
24.06.2004, 12:41 Uhr
Anfänger00



Hallo,
ich hab mir vorgenommen,die NeHe tuts durchzuarbeiten,musste
aber festellen das ich kein glaux habe und die "glaux.a" für den
Dev-c++ IDE (Cygwin) nicht finden kann.
Ich habe dann versucht einen bmp loader zu programmieren,der funzt aber nur mit bmps von NeHe und nicht mit denen von Gimp.
Jetzt bleibt nur noch DevIL,doch ich finde kein tut,zumindest keines,bei dem das Programm dann nicht abstürzt,wie es bei meinem bmp loader der Fall
ist.
Kennt ihr ein gutes Tut?
Auserdem würd mich interessieren,aus welchen Gründen mein bmploader
(BITMAPFILEHEADER,BITMAPINFOHEADER) mit den NeHe bmps funzt.

Würde mich über jede Antwort freuen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.06.2004, 14:10 Uhr
erfos



Probier mal glaux.h einzubinden anstatt glaux.a.

In OpenGL dürfen die Bitmaps nur ... 32*32, 64*64, 128*128 ... Pixel groß sein, musst mal gucken ob deine bmps so groß sind.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.06.2004, 14:43 Uhr
Anfänger00



ja ich hab glaux.h eingebunden,aber mir fehlt die .lib(bei dev-c++ sind dass die .a)
mein bild hat 256*256,daran liegts nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.06.2004, 17:53 Uhr
Anfänger00



Ich hatte nur einen Speicherfehler in meiner Funktion,jetzt gehts mit allen 256*256.
Aber nicht mit 128*128,512*512 usw.
ich poste mal den code:

C++:
// min_GLtexdat ist die Struktur die nur die minimalen Daten die opengl
// für dieses beispiel braucht aufnimmt.(int x,int y, unsigned char *Daten)
bool bmpload(char *Dateiname,min_GLtexdat *Daten)
{
BITMAPFILEHEADER *bmfh;
BITMAPINFOHEADER *bmih;
unsigned char *Speicher;
int   Size=0;
ifstream File;
int i=0;

File.open(Dateiname,ios::binary);
if(!File)
{
return false;
}
File.seekg(0L,ios::end);
Size = File.tellg();
Speicher= new unsigned char[Size];
File.seekg(0L,ios::beg);

while(i<Size)
{
    Speicher[i]=File.get();
    i++;
}//while
      


bmfh = (BITMAPFILEHEADER*) Speicher;
bmih = (BITMAPINFOHEADER*) (Speicher + sizeof(BITMAPFILEHEADER));

delete[] Speicher;
Daten->Daten = new unsigned char[Size-(bmfh->bfOffBits)];
i=0;

File.seekg(bmfh->bfOffBits);

while(i<Size-bmfh->bfOffBits)
{
    Daten->Daten[i]=File.get();
    i++;
}//while

for(int i=0;i<(Size-bmfh->bfOffBits)-3;i+=3)
{
    unsigned char buf;
    buf=Daten->Daten[i];
    Daten->Daten[i]= Daten->Daten[i+2];
    Daten->Daten[i+2] = buf;
}//for

Daten->x= bmih->biWidth;
Daten->y= bmih->biHeight;


return true;
}//bool()  


Die Funktion setzt ich dann einfach in LoadGLTextures() beim Nehe 06 Tut ein.
Kann es sein,dass es nicht an meiner Funktion liegt,sondern dass NeHe 06 einfach nur für diese Größe ausgelegt ist?
Ich hab schon nach solchen Hinweisen im tut gesucht,aber keine gefunden.

Dieser Post wurde am 27.06.2004 um 17:55 Uhr von Anfänger00 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.07.2004, 23:39 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ich kenn zwar OpenGl nicht aber deine bitmapfunktion sieht auf den ersten blick richtig aus...
allerdings machst du das ziemlich kompliziert...


C++:
File.open(Dateiname,ios::binary);
if(!File)
{
return false;
}
File.seekg(0L,ios::end);
Size = File.tellg();
Speicher= new unsigned char[Size];
File.seekg(0L,ios::beg);


hier würd ich mir einfach ein BITMAPFILEHEADER und ein BITMAPINFOHEADER definieren und da die ersten bytes einlesen...
dann weisst du wieviele bytes du für dein array brauchst und kannst sofort entsprechend allokieren...
auch ziemlich langsamm immer jedes byte einzeln einzulesen...



C++:
bmfh = (BITMAPFILEHEADER*) Speicher;
bmih = (BITMAPINFOHEADER*) (Speicher + sizeof(BITMAPFILEHEADER));

delete[] Speicher;
Daten->Daten = new unsigned char[Size-(bmfh->bfOffBits)];
i=0;

File.seekg(bmfh->bfOffBits);

while(i<Size-bmfh->bfOffBits)
{
    Daten->Daten[i]=File.get();
    i++;
}//while


das fällt dann alles weg du liest einfach von bfOffBits biSizeImage Bytes ein...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ OpenGL ]  


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: