Le probleme avec la transparence c'est en faite que:
Je veut rendre le noir transparent, avec sdl il y a une fonctione pour mais celle ci ne fait que renseigner un champ dans la surface, elle ne rend pas les pixels transparent, c'est lors de l'utilisation de cette surface que sdl va prendre en compte la couleur que j'ai spécifié commee tansparente.
Il faudrait donc que je parcours les pixels de ma surface, et si la couleur est noir alors je change le champ alpha de ce pixel pour le rendre transparent.
Je vais regarder qu'elle forme a le tableau pointé pas pixel*.
POur la taille des surfaces, en effet c'est ce que je fait et c'est ce qui m'a amené a repenser au full opengl.
Ce probleme est facilement resolvable, il suffit que j'enleve la possibilité à l'utilisateur de redimenssioner une fenetre, cette option n'étant pas indispensable pour ceux que je veut faire.
edit --
j'ai resolue le probleme des surface dont la taille n'est pas egale a une puissance de 2 comme ceci:
- la variable sdl_surface est alloué avec une taille qui soit une ppuissance de 2
- je ne travaille que sur la partie de cette surface qui m'interresse
- lo'bjet sur lequel je vais appliquer ma texture est égal à la taille de la surface qui m'interresse, il est donc inferieur ou egal a la surface.
- lors e l'application de la texture, je n'applique que la partie qui m'interresse
C'était tout bete en faite ... :DCode:
1
2
3
4 glTexCoord2f( 0.0f, 0.0f ); glVertex2d(x,y); glTexCoord2f( (float)l/surface->w, 0.0f ); glVertex2d(l+x,y); glTexCoord2f( (float)l/surface->w, (float)h/surface->h ); glVertex2d(l+x,h+y); glTexCoord2f( 0.0f, (float)h/surface->h ); glVertex2d(x,h+y);