Lire des Jpeg, Gif, Png pour texture (Delphi/C++ Builder)
Si je lis un fichier .bmp avec GlAux:
Code:
1 2
|
pTextures := auxDIBImageLoadA( PChar(NomFichierBMP) ); |
... aucun problème. La primitive ci-après fonctionne correctement.
Code:
1 2 3 4 5
|
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB
, pTextures^.SizeX, pTextures^.SizeY
, 0, GL_RGB, GL_UNSIGNED_BYTE
, pTextures^.Data); |
Si je lis un fichier Jpeg, Gif, Png pour en faire un BitMap (en Delphi)
Code:
1 2 3
|
ImageJPEG.LoadFromFile(NomFichierJPEG);
BitMapJpeg.Assign(ImageJPEG); |
...la même primitive fait planter le programme:
Code:
1 2 3 4 5
|
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB
, BitMapJpeg.Width, BitMapJpeg.Height
, 0, GL_RGB, GL_UNSIGNED_BYTE
, @BitMapJpeg; |
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:
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. |
... ou alors existe-t-il une librairie qui fait cela naturellement (apparemment GlAux ne lit que des .BMP)