¿Qué significan los modos de mezcla en pygame?
-
03-07-2019 - |
Pregunta
Surface.blit tiene un nuevo parámetro en 1.8: mezcla. Se definen los siguientes valores:
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
¿Alguien puede explicar qué significan estos modos?
Solución
Puede encontrar el origen de las operaciones de mezcla aquí: surface.h
Básicamente, ADD agrega los dos píxeles de origen y recorta el resultado en 255. SUB resta los dos píxeles y clips en 0.
MULT
: result = (p1 * p2) / 256
MIN
: seleccione el valor más bajo de cada canal (no el píxel completo), de modo que si pixel1 es (100,10,0)
y pixel2 es (0,10,100)
, obtienes (0,10,0)
MAX
: opuesto a MIN (es decir, (100,10,100)
)
Y hay un modo de mezcla adicional que no es obvio en los documentos: 0
(o simplemente omita el parámetro). Este modo '' sellará " superficie de origen en el destino. Si la superficie de origen tiene un canal alfa, esto determinará qué tan fuerte es cada píxel es ( 0
= sin efecto, 255
= copiar píxel, 128
: resultado = .5 * fuente + .5 * destino
).
Efectos útiles: Para oscurecer un área determinada, use el modo de fusión 0, llene la superficie de la fuente / sello en negro y configure alfa en 10
: (0,0,0,10)
.
Para aligerarlo, use blanco (255,255,255,10)
.
Otros consejos
Esos son modos de fusión para componer imágenes una encima de la otra. El nombre del modo de fusión ya le indica la operación subyacente.
Las constantes BLEND_ *
son simplemente alias para las constantes BLEND_RGB_ *
y las variantes BLEND_RGBA_ *
operan en los cuatro canales (incluido el alfa canal) en lugar de solo RGB.
Para obtener información general sobre los diferentes modos de fusión y sus respectivos efectos, consulte aquí .