Этот эффект можно имитировать с пиксельными картами и задать определенный цвет в карте источника прозрачным, установив его альфа-фактор в нуль. Ниже приводится подпрограмма, которая сканирует пиксельную карту и устанавливает альфа-фактор каждого пиксела в нуль, если его цвет совпадает с выбранным цветом, и в единицу в противном случае:

Средства для растровой графики

void RGBApixmap::setChromaKey(RGB c) {
long count - 0;
for(int row - 0; row < nCols: row++) fordnt col - 0: col < nRows: col++) {
RGBA p - pixel[count]:
1f(p.r - c.r && p.g - eg && p.b - c.b)
p1xel[count++].a - 0: else p1xel[count++].a - 255:
}
}
Хроматический ключ, используемый в телевидении Пример 10.3.4. Использование рисования кистью

Рис. 10.13. Хроматический ключ, используемый в телевидении Пример 10.3.4. Использование рисования кистью

х программе рисования курсор мыши выступает в качестве кисти, так что можно каждому «мазку» кисти сопоставить свой образчик цвета. Это может быть сделано в OpenGL смешиванием с помощью blend( ) пиксельной карты кисти с изображением адресата, задавая для пикселов кисти альфа-фактор равным 10 % или около того, эри каждом мазке кисти к изображению адресата примешивается все больше цвета кисти, (х упражнениях приводится оценка усиления нового цвета с каждым новым мазком кисти.) яожно придать пикселам вблизи от центра кисти больший альфа-фактор, чем по краям, и тогда цвет в центре будет добавляться быстрее, ыа рис. 10.14 показано использование кисти в виде облака; кисть применяется различное число раз для придания рисунку различных степеней покрытия.

Рисование с помощью «облачной» кисти

Рис. 10.14. Рисование с помощью «облачной» кисти

10,3. Объединение пиксельных карт

Пример 10.3.5. Управление курсором Когда пользователь перемещает мышь, курсор движется по дисплею. В каждой своей позиции курсор делает невидимой ту часть экрана, которую он заслоняет. Когда курсор движется дальше, эта часть экрана должна быть восстановлена. Этот процесс аналогичен тому, который имел место в спускаемом меню, как видно из рис. 10.15. Прежде чем курсор рисуется на экране, делается копия прямоугольного участка изображения, который будет закрыт курсором (на рисунке он показан как пиксельная карта Р1х1). Затем пиксельная карта курсора смешивается в этой точке. Альфа-фактор этой карты равен единице в непрозрачной части курсора и нулю в остальных-местах, поэтому при смешивании этих двух изображений кажется, будто стрелка парит над изображением фона. Когда курсор перемещается в новую позицию, происходят следующие три события"opengl1_690.html">⇐ Предыдущая| |Следующая ⇒