Вы можете использовать group by
и having
:
select id
from t
group by id
having min(variant_id) <> max(variant_id);
Вы также можете использовать:
having count(distinct variant_id) > 1
Можно найти источник для операций смешения здесь: 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
Эффект =no, 255
Пиксель =copy, 128
: result = .5*source + .5*destination
).
Полезные действия: Для затемнения определенной области используйте режим смешивания 0, заполните черную поверхность источника/штампа и альфа набора к 10
: (0,0,0,10)
.
Для освещения его используйте белый (255,255,255,10)
.
Это - режимы наложения для составления композита изображений друг на друге. Название режима наложения уже говорит Вам базовую операцию.
BLEND_*
константы являются просто псевдонимами для BLEND_RGB_*
константы и BLEND_RGBA_*
варианты воздействуют на все четыре канала (включая альфа-канал) только в противоположность RGB.
Для получения общей информации о различных режимах наложения и их соответствующих эффектах, посмотрите здесь.