Cosa significano le modalità di fusione in pygame?
-
03-07-2019 - |
Domanda
Surface.blit ha un nuovo parametro in 1.8: miscela. Sono definiti i seguenti valori:
-
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
Qualcuno può spiegare cosa significano queste modalità?
Soluzione
Puoi trovare la fonte per le operazioni di fusione qui: surface.h
Fondamentalmente, ADD aggiunge i due pixel di origine e taglia il risultato a 255. SUB sottrae i due pixel e le clip a 0.
MULT
: result = (p1 * p2) / 256
MIN
: seleziona il valore più basso di ciascun canale (non l'intero pixel), quindi se pixel1 è (100,10,0)
e pixel2 è (0,10,100)
, ottieni (0,10,0)
MAX
: di fronte a MIN (ovvero (100,10,100)
)
E c'è una modalità di fusione aggiuntiva che non è ovvia dai documenti: 0
(o semplicemente lascia il parametro fuori). Questa modalità " timbro " superficie della sorgente nella destinazione. Se la superficie di origine ha un canale alfa, questo determinerà come "forte" ogni pixel è ( 0
= nessun effetto, 255
= copia pixel, 128
: result = .5 * source + .5 * destinazione
).
Effetti utili: per scurire una determinata area, utilizzare il metodo di fusione 0, riempire la superficie di origine / timbro in nero e impostare l'alfa su 10
: (0,0,0,10)
.
Per schiarirlo, usa il bianco (255.255.255,10)
.
Altri suggerimenti
Quelli sono i metodi di fusione per comporre le immagini una sopra l'altra. Il nome del metodo di fusione indica già l'operazione sottostante.
Le costanti BLEND_ *
sono semplicemente alias per le costanti BLEND_RGB_ *
e le varianti BLEND_RGBA_ *
operano su tutti e quattro i canali (incluso l'alfa canale) anziché solo RGB.
Per informazioni generali sulle diverse modalità di fusione e sui rispettivi effetti, vedere qui .