Практика программирования (Бейсик, Си, Паскаль)

       

Как формируется RGB-цвет пикселов


Сокращение RGB происходит от английских обозначений базовых цветов -Red (красный), Green (зеленый) и Blue (синий). Именно эти цвета, смешанные в определенной пропорции, и управляют окраско'й пикселов на экране. В видеопамяти каждому пикселу отводится 2, 4, 8 или 24 двоичных разряда, запоминающих код цвета. В стандарте VGA используются только 4 бита, по которым определяется один из 16 регистров палитры, участвующий в формировании цвета. В каждом 6-разрядном регистре палитры по 2 разряда используются для задания интенсивности соответствующей RGB-компоненты. Это дает возможность манипулировать 64 цветами, но выбрать из них в каждый конкретный момент можно только 16. На самом деле механизм формирования сигнала управления цветом гораздо сложнее и в нем задействованы еще 256 18-разрядных регистров DAC (Digital Analog Converter — цифро-аналоговый преобразователь, русское сокращение ЦАП). С их помощью гамма цветовых оттенков увеличивается до 256 К.

В каждый момент графическая система имеет дело с двумя ранее установленными цветами — цветом переднего плана (цветом рисования —foreground color) и цветом заднего плана (цветом фона — background color). Цвету фона всегда соответствует нулевой программный код цвета. Физический цвет фона определяется содержимым регистра палитры с номером 0. По умолчанию в нем находится нулевой шестибитовый код, задающий нулевую интенсивность по каждой из базовых компонент цвета, что соответствует черному цвету. Изменение содержимого этого регистра изменяет фон экрана только в тот момент времени, когда программа обращается к процедуре очистки экрана.

В отличие от этого, изменение цвета пиксела в процедурах рисования происходит мгновенно, в момент записи нового кода цвета в соответствующую область видеопамяти. Видеокарта позволяет сформировать новый цвет как результат взаимодействия старого и нового кодов по выбранному правилу. Среди возможных правил — затирание прежнего кода новым кодом цвета или его инверсией, взаимодействие старого и нового кодов по одной из логических операций — AND, 0R, X0R. 0собо хотим обратить внимание на последнюю логическую операцию, которая используется для стирания или "проявления" изображений. Если на код цвета пиксела накладывается такой же двоичный код по операции X0R, то результат будет нулевым, что соответствует цвету фона или стиранию прежней точки. Если на нулевой код цвета по операции X0R наложить прежний цвет пиксела, то точка "проявится". Этой возможностью часто пользуются при анимации изображений.



Содержание раздела