Иллюстрированный самоучитель по SVGA

Как получается цвет точки

Работа с цветом является неотъемлемой частью любой графической программы. В предыдущей главе мы почти не затрагивали вопросы, связанные с получением нужного цвета изображения. Это делалось не только для упрощения изложения материала. В большинстве случаев в режимах PPG действия, выполняемые при построении изображения, никак не связаны с цветом выводимых точек. Формирование нужных цветов обычно производится до построения изображения, при этом выполняются специфические действия, которые могут не требовать непосредственной работы с видеопамятью.

По способу указания цвета и работы с ним все видеорежимы VESA делятся на две группы. К первой относятся режимы PPG, в этом случае код цвета находится в специальных регистрах видеоконтроллера, а ко второй группе – режимы direct color, при их установке цвет зависит только от кода точки. В данной главе мы продолжим описание программирования для режимов PPG, режимы direct color будут описаны в Главе 7. Независимо от того, каким видеорежимам вы отдаете предпочтение, советуем прочитать эту главу, поскольку в ней, кроме специальных приемов программирования, обсуждаются общие вопросы, связанные с цветом.


Цвет появляется на экране монитора в результате совмещения трех базовых цветов в одной точке. Для программирования работы с цветом не имеет принципиального значения, что является источником этих трех цветов и как они смешиваются в одной точке. Важно другое – как можно управлять интенсивностью каждого цвета и что получается в результате их смешения (наложения в одной точке).

На практике мы в большинстве случаев имеем дело с аналоговыми RGB-мониторами. Это значит, что на их входы, помимо прочих сигналов, поступают три разных напряжения, задающие интенсивность красного (Red), зеленого (Green) и синего (Blue) цветов. В последние годы выпускаются мониторы с цифровым управлением, но оно не распространяется на сигналы цветности, которые остаются аналоговыми.

DAC-регистры видеокарты

Аналоговые входы монитора подключаются к выходам специальных регистров видеокарты. Их сокращенное название DAC (Digitai-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.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.