Вы можете найти источник для операций смешивания здесь: 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)
.