Si je lis un fichier .bmp avec GlAux:... aucun problème. La primitive ci-après fonctionne correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 pTextures := auxDIBImageLoadA( PChar(NomFichierBMP) );Si je lis un fichier Jpeg, Gif, Png pour en faire un BitMap (en Delphi)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB , pTextures^.SizeX, pTextures^.SizeY , 0, GL_RGB, GL_UNSIGNED_BYTE , pTextures^.Data);
...la même primitive fait planter le programme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ImageJPEG.LoadFromFile(NomFichierJPEG); BitMapJpeg.Assign(ImageJPEG);La question que je me pose, c'est si je ne dois pas, après la lecture créer un buffer bitmap, basique, où tous les pixels se suivent à la queue-leuleu en bouclant sur le nombre de lignes et en utilisant la méthode scanline qui délivre un pointeur sur un buffer ligne (méthode analogue en C++Builder):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB , BitMapJpeg.Width, BitMapJpeg.Height , 0, GL_RGB, GL_UNSIGNED_BYTE , @BitMapJpeg;... ou alors existe-t-il une librairie qui fait cela naturellement (apparemment GlAux ne lit que des .BMP)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 BitMapJPeg := TBitMap.create; try BitMapJPeg.LoadFromFile(NomFichierJPEG); for y := 0 to BitMapJPeg.Height -1 do begin P := BitMapJPeg.ScanLine[y]; // ... transférer la ligne pointée par P dans un buffer basique.
Partager