Максимальное цветовое разрешение обеспечивают видеорежимы VESA, которые в англоязычной литературе принято называть True color или 24-bit Color, последнее название указывает размер кода цвета, а не кода точки. В этих режимах базовые цвета имеет 256 градаций, а общая палитра содержит 256x256x256 = 16 777 216 (пли 16М) цветов.
Код точки обычно занимает в видеопамяти 32 разряда (4 байта или двойное слово), кроме базовых цветов в него входит дополнительный (резервный) пустой байт. Расположение базовых цветов и пустого байта в разрядах двойного слова показано в табл. 7.2.
Таблица 7.2. Расположение базовых цветов в 32-разрядном слове
БайтЗ Разряды 24—31 |
Байт 2 |
Байт 1 |
Байт 0 |
||||||||
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 градаций базовых цветов весьма сомнительна.