O que os modos de mistura em pygame média?
-
03-07-2019 - |
Pergunta
Surface.blit tem um novo parâmetro em 1,8: mistura. Os seguintes valores são definidos:
-
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
Alguém pode explicar o que significa esses modos?
Solução
Você pode encontrar a fonte para as operações de mistura aqui: surface.h
Basicamente, ADD adiciona os dois pixels de origem e clipes o resultado em 255. subtrai SUB os dois pixels e clips em 0.
MULT
: result = (p1 * p2) / 256
MIN
: Selecione o valor mais baixo de cada canal (não todo o pixel), por isso, se Pixel1 é (100,10,0)
e pixel2 é (0,10,100)
, você começa (0,10,0)
MAX
: frente de MIN (isto é (100,10,100)
)
E há um modo de mistura adicional que não é óbvio a partir docs: 0
(ou apenas deixar o parâmetro de saída). Este modo vai "carimbar" a superfície de origem para o destino. Se a superfície de fonte tem um canal alfa, isso será determinar como "forte" cada pixel é (0
= nenhum efeito, 255
= copiar pixel, 128
: result = .5*source + .5*destination
)
efeitos úteis: Para escurecer uma determinada área, o modo de utilização mistura 0, preencher o / black fonte selo superfície e alfa conjunto para 10
:. (0,0,0,10)
Para iluminá-lo, use (255,255,255,10)
branco.
Outras dicas
Esses são modos de mistura para a composição de imagens em cima uns dos outros. O nome do modo de mesclagem já diz que a operação subjacente.
As constantes BLEND_*
são simplesmente nomes alternativos para as constantes BLEND_RGB_*
e as variantes BLEND_RGBA_*
operar em todos os quatro canais (incluindo o canal alfa), em oposição a somente RGB.
Para obter informações gerais sobre os diferentes modos de mistura e seus respectivos efeitos, consulte aqui .