Que signifient les modes de fusion dans pygame?
-
03-07-2019 - |
Question
Surface.blit comporte un nouveau paramètre dans la version 1.8: mélange. Les valeurs suivantes sont définies:
-
BLEND_ADD
-
BLEND_SUB
-
BLEND_MULT
-
BLEND_MIN
-
BLEND_MAX
-
BLEND_RGBA_ADD
-
BLEND_RGBA_SUB
-
BLEND_RGBA_MULT
-
BLEND_RGBA_MIN
-
BLEND_RGBA_MAX
-
BLEND_RGB_ADD
-
BLEND_RGB_SUB
-
BLEND_RGB_MULT
-
BLEND_RGB_MIN
-
BLEND_RGB_MAX
Quelqu'un peut-il expliquer la signification de ces modes?
La solution
Vous pouvez trouver la source des opérations de mélange ici: surface.h
Fondamentalement, ADD ajoute les deux pixels source et coupe le résultat à 255. SUB soustrait les deux pixels et les clips à 0.
MULT
: result = (p1 * p2) / 256
MIN
: Sélectionnez la valeur inférieure de chaque canal (pas le pixel entier). Ainsi, si pixel1 est (100,10,0)
et pixel2 est . (0,10,100)
, vous obtenez (0,10,0)
MAX
: Inverse de MIN (i.e. (100,10,100)
)
Et il existe un mode de fusion supplémentaire qui n’est pas évident dans la documentation: 0
(ou laissez simplement le paramètre de côté). Ce mode va "tamponner". surface source dans la destination. Si la surface source a un canal alpha, cela déterminera comment "fort" chaque pixel est ( 0
= pas d'effet, 255
= copier un pixel, 128
: result = .5 * source + .5 * destination
).
Effets utiles: pour assombrir une zone donnée, utilisez le mode de fusion 0, remplissez la surface source / tampon en noir et définissez le paramètre alpha sur 10
: (0,0,0,10)
.
Pour l’alléger, utilisez du blanc (255,255,255,10)
.
Autres conseils
Ce sont des modes de fusion permettant de composer des images les unes sur les autres. Le nom du mode de fusion vous indique déjà l’opération sous-jacente.
Les constantes BLEND _ *
sont simplement des alias pour les constantes BLEND_RGB _ *
et les variantes BLEND_RGBA _ *
opèrent sur les quatre canaux (y compris l'alpha canal), par opposition au RVB uniquement.
Pour des informations générales sur les différents modes de fusion et leurs effets respectifs, voir ici .