Страница 1 из 6 В каждом видеорежиме, за исключением, конечно, тех случаев, когда используется монохромный дисплей, имеется множество цветов. Вы, возможно, уже заметили, что среди различных режимов наблюдается существенная дифференциация по количеству доступных цветов. В этом разделе мы опишем значения цветов для видеорежимов.
Цвета на экранах видеодисплеев формируется за счет комбинации четырех элементов: три цветовых компонента — красный, зеленый и синий плюс компонент интенсивности, или яркости.
Текстовые и графические режимы используют те же самые значения цветов и интенсивности, однако они по-разному их объединяют для получения цветных изображений. В текстовых режимах, где основной единицей отображения является знак, состоящий из нескольких пикселов, для установки характеристик цвета, интенсивности и мерцания знака и его фона используется целый байт. В графических режимах каждый пиксел представлен группой от 1 бита до 8 битов, значения которых определяют цвет и яркость отображаемого пиксела.
В текстовых и графических режимах, обеспечивающих 16 цветов, четыре компонента цвета и яркости объединяются 16 различными способами. Цвет задается группой из 4 битов. Каждый бит определяет наличие или отсутствие конкретного компонента цвета. В результате получаются 16 цветовых комбинаций, соответствующих шестнадцати двоичным числам длиной 4 бита (см. табл. 4.3).
В некоторых видеорежимах данные в буфере состоят из 4-битовых значений атрибутов, в точности соответствующих 16 возможным цветовым комбинациям на экране. В других видеорежимах значения атрибутов не задают явно цвет. Например, для EGA каждое значение атрибута задает один из 16 регистров палитры, каждый из которых содержит значение цвета (см. рис. 4.2.). Именно значения цвета палитры определяют, какие цветовые комбинации будут использоваться при формировании изображения на экране.
Использование палитр делает возможным указание какого-либо цвета из широкого диапазона цветов с помощью сравнительно небольшого количества битов данных в видеобуфере. Каждый из 16 регистров палитры EGA может, к примеру, содержать одно из 64 различных 6-битовных значений цвета. Таким образом, при работе с EGA любые 2 из 64 различных цветов могут быть использованы в 2-цветном видеорежиме, любые 4 цвета из 64 могут быть использованы в 4-цветном режиме и, наконец, любые 16 цветов из 64 могут быть использованы в 16-цветном режиме.
Все видеоподсистемы фирмы IBM, за исключением MDA, могут использовать палитры для отображения цветов. В CGA имеется три встроенных 4-цветных палитры для работы в 4-цветном режиме с разрешающей способностью в 320x200. В EGA, как мы уже видели, есть 16-цветная палитра, каждый цвет в которой выбирается из набора в 64 цвета. В MCGA и VGA с еще более широким диапазоном воспроизводимых цветов используется специальный компонент типа палитры — цифре/аналоговый видеопреобразователъ (video DAC — digital to analog converter) — для передачи цветовых сигналов на экран.
DAC содержит 256 цветовых регистров, каждый из которых хранит 6-битов^ые значения цвета для красного, зеленого и синего. Поскольку для каждого из компонентов RGB существует 64 возможных значения, каждый регистр цвета DAC может задавать один из 64x64x64 - 262144 различных цветов. Такой широкий диапазон цветов поможет вам отобразить едва уловимые оттенки.
Цветовые регистры DAC видеоподсистемы MCGA во многом служат той же цели, что и регистры палитры видеоподсистемы EGA. Значения атрибутов в видеобуфере задают регистры цвета DAC, содержимое которых определяют возникающие на экране краски. К сожалению, только один видеорежим MCGA может в полной мере использовать возможности DAC: 256-цветный режим с разрешающей способностью в 320x200. Только этот видеорежим использует 8-битовые значения атрибутов, которые позволяют задавать все 256 регистров цвета DAC. Остальные видеорежимы используют значения атрибутов размером не более 4 битов, поэтому в этих режимах задействуются только первые 16 регистров цвета DAC.
Видеоподсистема VGA снимает это ограничение (а заодно ставит новые проблемы) за счет одновременного использования и 16 регистров палитры (как в EGA), и набора из 256 регистров цвета DAC (как в MCGA). Значение атрибута в видеобуфере задает один из 16 регистров палитры. По содержимому этого регистра выбирается один из 256 регистров цвета DAC, который, в свою очередь, определяет цвет, появляющийся на экране (см. рис. 4.3).
Задание цвета на адаптерах EGA, MCGA и VGA сложнее, чем на CGA. Однако для облегчения этого процесса ROM BIOS загружает в регистры палитры <на EGA и VGA) и в регистры цвета DAC (на MCGA и VGA) значения цветов, точно совпадающие с используемыми на CGA. Если вы работаете в текстовом или графическом режиме, совместимом с режимами для CGA, на одной из новейших видеоподсистем, игнорируя регистры палитры и регистры DAC, вы видите те же самые цвета, что и на CGA.
По этой причине обычно лучше игнорировать регистры палитры и регистры DAC на начальной стадии разработки прикладной программы. Как только вы отладите программу на базе совместимых с CGA цветов, вы можете добавить в нее код для изменения цветов палитры и/или DAC. ROM BIOS предоставляет полный набор служб, которые позволяют вам обращаться к регистрам палитры и регистрам DAC. В гл.9 данные службы описываются достаточно подробно. Продолжая разговор о цвете, мы советуем вам прочитать оставшиеся разделы, в которых обсуждаются важные вопросы по данной теме.
|