Что означают режимы наложения в Pygame?
У Surface.blit появился новый параметр в 1.8: blend. Определены следующие значения:
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
Может кто-нибудь объяснить, что означают эти режимы?
2 ответа
Вы можете найти источник для операций смешивания здесь: surface.h
По существу, ADD добавляет два исходных пикселя и обрезает результат в 255. SUB вычитает два пикселя и обрезает в 0.
MULT
: result = (p1 * p2) / 256
MIN
: Выберите нижнее значение каждого канала (не весь пиксель), так что если pixel1 (100,10,0)
и pixel2 это (0,10,100)
, ты получаешь (0,10,0)
MAX
: Напротив МИН (то есть (100,10,100)
)
И есть дополнительный режим наложения, который не очевиден из документов: 0
(или просто не указывайте параметр). Этот режим будет "штамповать" исходную поверхность в пункт назначения. Если исходная поверхность имеет альфа-канал, это будет определять, насколько "сильным" является каждый пиксель (0
= нет эффекта, 255
= скопировать пиксель, 128
: result = .5*source + .5*destination
).
Полезные эффекты: чтобы затемнить определенную область, используйте режим наложения 0, залейте поверхность источника / штампа черным и установите альфа в 10
: (0,0,0,10)
,
Чтобы облегчить это, используйте белый (255,255,255,10)
,
Это режимы смешивания для наложения изображений друг на друга. Название режима наложения уже говорит вам основную операцию.
BLEND_*
константы просто псевдонимы для BLEND_RGB_*
константы и тому BLEND_RGBA_*
варианты работают на всех четырех каналах (включая альфа-канал), а не только на RGB.
Для получения общей информации о различных режимах смешивания и их соответствующих эффектах, смотрите здесь.