« Programmation avec la SDL/La transparence » : différence entre les versions

Contenu supprimé Contenu ajouté
m WL:RD : ! orthographe/grammaire
Ajout d'un paragraphe
Ligne 7 :
 
== Les modes de fusions ==
=== Présentation ===
 
En fait, un pixel n'est composé au départ que du rouge, du vert et du bleu. Au total, pour mémoriser une couleur, on utilise donc 3 octets répartis entre les trois couleurs primaires. Mais vous savez qu'un ordinateur n'aime guère les nombres impairs, et qu'il adore les puissances de 2. Pour stocker une couleur, on utilise donc 4 octets. Comme il restait un octet de libre, on a ajouté un canal alpha complètement fictif. En fait, celui-ci va être utilisé au moment où l'on va vouloir afficher le pixel à l'écran. Il indique seulement à quel point nous devons prendre en compte la couleur du pixel qui va être remplacé (la destination) par le pixel qu'on veut afficher (la source). Pour cela, il existe de très nombreuses façons de calculer la couleur du pixel résultant de la superposition de la destination et de la source que l'on appelle des modes de fusion (''blend mode'' en anglais). La SDL n'en compte que trois :
Ligne 35 ⟶ 36 :
|colspan="3"|Dans ce tableau, ''res'' signifie résultat, ''dst'' destination et ''src'' source.
|}
 
=== En pratique ===
Le mode de transparence par défaut est SDL_BLENDMODE_BLEND. En pratique, pour récupérer le mode de fusion d'une texture, on utilise le fonction suivante :
<source lang = "c">
int SDL_GetTextureBlendMode(SDL_Texture* texture, SDL_BlendMode* blendMode);
</source>
 
Pour changer le mode de fusion d'une texture, on a :
<source lang = "c">
int SDL_SetTextureBlendMode(SDL_Texture* texture,SDL_BlendMode blendMode);
</source>
 
Dans les deux cas, les fonctions renvoient l'habituel 0 pour signaler que tout s'est bien passé et une valeur négative sinon. Les prototypes parlent d'eux-même, je n'en dirai donc pas plus.