Si je lis un fichier .bmp avec GlAux:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
      pTextures := auxDIBImageLoadA( PChar(NomFichierBMP) );
... aucun problème. La primitive ci-après fonctionne correctement.
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);
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
 
      ImageJPEG.LoadFromFile(NomFichierJPEG);
      BitMapJpeg.Assign(ImageJPEG);
...la même primitive fait planter le programme:
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;
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
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)