Как получается цвет точки
Цвет появляется на экране монитора в результате совмещения трех базовых
цветов в одной точке. Для программирования работы с цветом не имеет принципиального
значения, что является источником этих трех цветов и как они смешиваются
в одной точке. Важно другое — как можно управлять интенсивностью каждого
цвета и что получается в результате их смешения (наложения в одной точке).
На практике мы в большинстве случаев имеем дело с аналоговыми RGB-мониторами.
Это значит, что на их входы, помимо прочих сигналов, поступают три разных
напряжения, задающие интенсивность красного (Red), зеленого (Green) и
синего (Blue) цветов. В последние годы выпускаются мониторы с цифровым
управлением, но оно не распространяется на сигналы цветности, которые
остаются аналоговыми.
DAC-регистры видеокарты
Аналоговые входы монитора подключаются к выходам специальных регистров
видеокарты. Их сокращенное название DAC (oigitai-to-Anaiog Converter)
соответствует русскому техническому термину "цифро-аналоговый преобразователь"
(ЦАП). На входы DAC подается цифровая информация, а на выходе получается
напряжение, плавность изменения которого зависит от количества разрядов
в регистре.
В SVGA-видеокартах на каждый базовый цвет отведено 8 разрядов DAC-регистр(1 байт), поэтому возможны 256 градаций каждого цвета. При установке режимов
PPG количество разрядов искусственно сокращается до 6, а количество разных
уровней напряжения, соответственно, уменьшается до 64. Это сделано для
соответствия требованиям стандарта VGA, разработанного, в свое время,
фирмой IBM. При работе в видеорежимах direct color указанное ограничение
не действует, и используются все восемь разрядов.
Для вывода точки одновременно выдаются напряжения с выходов трех регистров,
иначе говоря, используется группа из трех регистров. Видеокарта содержит
256 таких групп (троек). В видеорежимах EPG код каждой точки, записываемой
в видеопамять, является номером одной из троек DAC-регистров. В описаниях
BIOS говорится о DAC, как об одном 18-разрядном регистре. Возможно, так
оно и есть, для нас это не существенно. Важно, что при работе в видеорежимах
PPG получаемый на экране цвет зависит от того, что было предварительно
записано в DAC-регистр(или в тройку DAC-регистров).
В восемнадцати двоичных разрядах можно записать одну из 64-64-64=262
144 комбинаций нулей и единиц, следовательно, в тройке DAC-регистров можно
закодировать именно такое количество цветов, но на экран одномоментно
выводятся только любые 256 из них (по количеству DAC-регистров). Несоответствие
между количеством оттенков, которое может иметь каждая точка, и общим
количеством цветов, которое можно одновременно вывести на экран, устраняется
только при работе в режимах direct color.
Естественный и искусственный цвет
Красный, зеленый и синий цвета используются в качестве базовых не только
в компьютерных мониторах, но и в телевидении, видеосъемке, цветной фотографии
и т. д. Возникает естественный вопрос о том, как они соотносятся с теми
цветами, которые мы встречаем в окружающем нас мире.
Вся цветовая гамма, которую способен воспринять человеческий глаз, содержится
в радуге. Это довольно редкое природное явление, при котором наблюдается
огромная дуга, содержащая плавно переходящие друг в друга цвета от красного
до фиолетового. Принято говорить о семи цветах радуги — красный, оранжевый,
желтый, зеленый, голубой, синий, фиолетовый. Такое деление условно и,
скорее всего, является одним из отголосков веры наших предков в некие
исключительные свойства числа семь. Разрешающая способность нормального
человеческого глаза позволяет уверенно различать множество оттенков каждого
цвета радуги.
Базовые цвета RGB делят весь видимый цветовой диапазон на три части:
красный объединяет красное и оранжевое поля радуги, зеленый — желтое и
зеленое, синий — голубое, синее и фиолетовое. Для получения нужного оттенка
смешиваются базовые цвета разной интенсивности, но предсказать, какой
получится оттенок, можно только в простых случаях. Например, если три
базовых цвета имеют одинаковую интенсивность, то в зависимости от ее значения
получатся разные оттенки серого цвета. При работе в режимах PPG можно
получить 64 оттенка от чисто черного до чисто белого цвета.
В более сложных случаях нужный оттенок подбирается эмпирически с помощью
графических редакторов. Большинство графических редакторов позволяет либо
выбирать нужный оттенок из предлагаемой палитры, либо изменять конкретные
значения базовых цветов, пока не будет подобрана их подходящая комбинация.
Изменением или подбором цветов отдельных точек приходится заниматься,
главным образом, при редактировании готовых рисунков, поэтому мы не будем
углубляться в рассмотрение этого вопроса.
Цвета RGB и CMY
RGB является основным, но не единственным набором базовых цветов, используемым
в вычислительной технике. В цветных струйных принтерах, производимых фирмой
Hewlett Packard (и не только этой фирмой), применяется дополнительный
набор цветов CMY (Cyan, Magenta, Yellow). На практике именно он удобен
для печати рисунков на бумаге. Поэтому работу с палитрой CMY поддерживает
большинство графических редакторов. Связь между наборами цветов RGB и
CMY иллюстрирует табл. 4.1. В ней показано, что получится при наложении
базовых цветов, интенсивность каждого из которых принимает одно из двух
значений: 0 или 100%. В таком случае возможны восемь различных комбинаций
интенсивности и столько же разных цветов. Названия двух из них требуют
некоторых уточнений. Magenta обычно переводится как "фуксин"
— красная анилиновая краска. Слово cyan обычно не переводят, а используют
транскрипцию (циан), этот цвет можно охарактеризовать как сине-зеленый.
Таблица 4.1. Смешение базовых цветов 100%-ной интенсивности
Интенсивность базовых цветов
|
Результат наложения цветов |
Красный |
Зеленый |
Синий |
0 |
0 |
0 |
Черный (black) |
0 |
0 |
100 |
Синий (blue) |
0 |
100 |
0 |
Зеленый (green) |
0 |
100 |
100 |
Циан (cyan) |
100 |
0 |
0 |
Красный (red) |
100 |
0 |
100 |
Мажента (magenta) |
100 |
100 |
0 |
Желтый (yellow) |
100 |
100 |
100 |
Белый (while) |
Обратите внимание на то обстоятельство, что при наложении пары цветов
red + cyan, green + magenta И blue + yellow
Получается белый цвет, Т. с. входящие в пару цвета дополняют друг друга.
Если red, green и blue
образуют базовую (RGB) палитру, то cyan, magenta и yellow — дополнительную
(CMY). Между прочим, негативное изображение на цветной фотопленке получается
в цветах дополнительной палитры.
Переход от базовой палитры к дополнительной выполняется так, как показано
в табл. 4.1, а для обратного преобразования используются следующие соотношения:
cyan + magenta = blue, cyan + yellow = green, magenta
+ yellow = red.
|