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