Максимальное цветовое разрешение
Максимальное цветовое разрешение обеспечивают видеорежимы VESA, которые
в англоязычной литературе принято называть True color или 24-bit Color,
последнее название указывает размер кода цвета, а не кода точки. В этих
режимах базовые цвета имеет 256 градаций, а общая палитра содержит 256x256x256
= 16 777 216 (пли 16М) цветов.
Кодирование цвета
Код точки обычно занимает в видеопамяти 32 разряда (4 байта или двойное
слово), кроме базовых цветов в него входит дополнительный (резервный)
пустой байт. Расположение базовых цветов и пустого байта в разрядах двойного
слова показано в табл. 7.2.
Таблица 7.2. Расположение базовых цветов
в 32-разрядном слове
БайтЗ
Разряды 24—31 |
Байт 2
Разряды 16—23 |
Байт 1
Разряды 8— 15 |
Байт 0
Разряды 0—7 |
1F |
... |
18 |
17 |
... |
10 |
F |
... |
8 |
7 |
... |
0 |
Резервный байт |
Красный цвет |
Зеленый цвет |
Синий цвет |
|
Байты оперативной и видеопамяти располагаются в порядке увеличения их
номеров (адресов). Именно в такой последовательности (слева направо) они
выводятся на экран при просмотре содержимого памяти с помощью различных
редакторов. Адрес двойного слова совпадает с адресом его нулевого байта,
поэтому первым в памяти хранится код синего цвета, вторым — зеленого,
третьим — красного, а четвертый байт пустой (резервный).
Код в памяти и в регистре
Байты регистров принято нумеровать в направлении справа налево. На экран
же они выводятся, начиная со старших (слева направо), т. е. так, как расположены
десятичные разряды в общепринятой форме записи чисел.
При сравнении содержимого памяти и регистров у неискушенного человека
может сложиться впечатление, что базовые цвета переставлены. На самом
деле это не так, просто одни и те же данные представлены двумя разными
способами. Сказанное иллюстрирует табл. 7.3.
Таблица 7.3. Расположение кодов цвета в памяти и в регистре
Название цвета |
Байты памяти |
Байты памяти |
0 |
1 |
2 |
3 |
3 |
2 |
1 |
0 |
Черный |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
Синий |
FF |
00 |
00 |
00 |
00 |
00 |
00 |
FF |
Зеленый |
00 |
FF |
00 |
00 |
00 |
bD |
FF |
00 |
Красный |
00 |
00 |
FF |
00 |
00 |
FF |
00 |
00 |
Белый |
FF |
FF |
FF |
00 |
00 |
FF |
FF |
FF |
Как уже говорилось, после установки видеорежима его основные характеристики
можно прочитать в массиве info. В нем, начиная со смешения IF. расположены
четыре пары байтов, содержащие размер кода и адрес его младшего бита для
красного, зеленого, синего цветов и резервного пространства. Обычно в
них находятся следующие коды: 08, 10h, 08, 08, 08, 00, 08, 18h, что соответствует
табл. 7.2.
После установки режимов True Color задача обязательно должна проверять
байт массива info со смещением I9h, содержащий размер точки в битах. Если
этот байт содержит код 20h, то видеокарта поддерживает 32-разрядный код
точки. Не все видеокарты устанавливают код такого размера, одно из исключений
описано в следующем разделе.
Возможность работы в режимах True Color зависит от объема памяти, расположенной
на видеокарте. При объеме видеопамяти 1 Мбайт эти режимы не поддерживаются.
При объеме видеопамяти 2 Мбайт памяти доступны видеорежимы H2h и ush,
имеющие разрешения 640x480 и 800x600 точек. При объеме видеопамяти 4 Мбайт
к ним добавляется режим ush с разрешением 1024x768 точек. Напоминаем,
что перечень режимов приведен в табл.
1.1.
Сравнение с режимом Hi-Color
В режимах True color код базового цвета увеличился на три разряда, соответственно
количество градаций базовых цветов увеличилось в 8 раз, а общее количество
цветовых оттенков — в 256 раз. Поэтому передача цвета в режимах True Color
существенно улучшается по сравнению с режимами Hi-color. Однако последние
в два раза сокращают необходимый объем видеопамяти и во столько же раз
или больше ускоряют манипуляции с графическими объектами. Поэтому во многих
случаях, например при работе графических акселераторов, основным является
режим Hi-Color. Тем более, что способность человеческого глаза различать
256 градаций базовых цветов весьма сомнительна. |