Есть ли в Qt аддитивный режим наложения? - PullRequest
0 голосов
/ 24 ноября 2018

QPainter имеет много режимов композиции, но ни один из них не называется аддитивным.Мне интересно, потому что аддитивное смешивание все время используется в играх для освещения / частиц.Единственный режим наложения - это что-то вроде эффекта освещения.

РЕДАКТИРОВАТЬ: Я понял, вот как вы можете эффективно создавать разноцветные огни в Qt.

В конструкторе или где-либо еще, а не в событии рисования:

light = QPixmap("light.png");
QPainter pix(light);
pix.setCompositionMode(QPainter::CompositionMode_Overlay);
pix.fillRect(light.rect(), QColor(255, 0, 0, 255)); // colorize the light in any color

Событие рисования:

// Do drawing, e.g. a background
p.drawPixmap(0, 0, QPixmap("background.png"));

// draw the lighting
p.setCompositionMode(QPainter::CompositionMode_Plus);
p.drawPixmap(100, 100, light);

Вы можете повторно использовать одно и то же растровое изображение и рисовать его с помощьюразличная непрозрачность или размер и т. д.

1 Ответ

0 голосов
/ 24 ноября 2018

Документация для QPainter::CompositionMode_Plus гласит:

И альфа, и цвет исходного и конечного пикселей добавляются вместе.

...