Что означают режимы наложения в 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.

Для получения общей информации о различных режимах смешивания и их соответствующих эффектах, смотрите здесь.

Другие вопросы по тегам