Salut, je n'arrive pas a comprendre à petit truc.
J'utilise SDL et openGL pour une appli. Pour ne pas a avoir a utiliser 36000 librairies, je charge mes textures openGL à partir de fichier bmp 24 bits en utilisant la fonction loadBMP.
Le problème c'est que je me retrouve avec la composante rouge et la composante bleue inversée. Pas de problème un fichier bitmap stocke les composante en BGR et le loadBMP ne fait pas la conversion en RGB... seulement apres vérification, si, il la fait.
J'ai regardé le format de ma surface et j'ai :
Rmask = 0xFF0000;
Gmask = 0x00FF00;
Bmask = 0x0000FF;
et
Rshift = 16;
Gshift = 8;
Bshift = 0;
le loss quand a lui est a zéro pour toutes les composantes.
Donc c'est bien du RGB.
Seulement quand je transforme ma surface en texture openGL avec ce code :
bah ca m'inverse la composante rouge et la composante bleue... Il y a un truc qui m'échappe... Quelqu un pourrait il m'expliquer ? merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 glTexImage2D(GL_TEXTURE_2D, 0, grassImg->format->BytesPerPixel, grassImg->w, grassImg->h, 0, GL_RGB, GL_UNSIGNED_BYTE, grassImg->pixels);
[EDIT] En fait je viens de vérifier, le BMP stock les couleur en BGR uniquement en paletté, en 24 bits c'est du RGB. Donc c'est censé être direct le bon format...







Répondre avec citation



Partager