Общая характеристика стандарта VESA. Стандартизация видеорежимов.
Классификация режимов
Перечисленные в табл. 1.1 видеорежимы делятся на следующие пять групп:
- текстовые режимы;
- 16-цветные режимы (EGA);
- packed pixel graphics (256 цветов);
- Hi-color (direct color 32K или 64К цветов);
- True Color (direct color 16M цветов).
Этим группам соответствуют 4 разные модели видеопамяти, поскольку разновидности режимов direct color используют одну модель. В описании стандарта понятие "модель видеопамяти" четко не объясняется, но речь идет о том, как видеоконтроллер интерпретирует содержимое байтов видеопамяти. Для программиста важно знать не модель, а способ доступа к видеопамяти и что при этом записывается в ее байты.
Три из четырех моделей допускают непосредственную работу с видеопамятью, т. е. запись и чтение содержимого ее байтов и слов с помощью обычных команд ассемблера. Исключением являются режимы EGA, в этом случае для чтения или записи необходима работа с внутренними регистрами видеокарты. Эти режимы морально устарели, кроме того, они хорошо описаны в литературе, поэтому в данной книге не рассматриваются.
Текстовые режимы VESA просто расширяют возможности аналогичных режимов IBM и позволяют использовать стандартные процедуры BIOS, предназначенные для работы с текстом. Программирование в текстовых режимах описано в первой части Главы 5.
Режимы packed pixel graphics отличаются от режима VGA IBM тем, что введено сегментирование видеопамяти, все пространство которой делится на окна размером по 64 Кбайт. Своевременное переключение окон позволяет работать с большим пространством видеопамяти, которое требуется для поддержки видеорежимов с высоким разрешением. Напомним, что в режиме VGA IBM разрешение составляет 320x200 точек (сравните с табл. 1.1).
В режимах packed pixel graphics между кодами точки и цвета нет однозначного соответствия, поскольку они расположены в разных устройствах видеокарты. Коды точек хранятся в видеопамяти, а коды их цветов – в специальных регистрах видеокарты. Изменяя содержимое этих регистров, можно изменить все цвета, использованные в изображении, без обращения к видеопамяти, т. е. не изменяя кодов точек образа рисунка. Количество регистров (256) определяет размер кодов точек – 1 байт (8 разрядов). В главе 3 описано программирование рисования и построения графических объектов в этих режимах, а в главе 4 – работа с цветом.
В режимах direct color базовые цвета расположены непосредственно в коде точки, который может содержать 2, 3 или 4 байта. На момент написания данной книги трехбайтовый код был обнаружен только у одного семейства акселераторов фирмы ATI. Размещение базовых цветов в коде точки значительно расширяет возможности работы с цветом и позволяет создавать различные спецэффекты, которые широко распространены в современной графике. Программирование в режимах direct color описано в Главе 7. В этих режимах увеличивается размер кода точки, а следовательно, и пространство видеопамяти, необходимое для хранения содержимого рабочей области экрана. Например, 1 Мбайт видеопамяти достаточно для работы во всех режимах packed pixel graphics, кроме I07h, с разрешением 1280x1024 точки.
В то время как для поддержки режима H2h с разрешением всего 640x480 точек требуется 2 Мбайт, а для режима 11Bh с разрешением 1280x1024 необходимо 6 Мбайт видеопамяти. Поэтому возможность использования режимов с высоким разрешением зависит не только от монитора, но и от объема видеопамяти.
Выбор конкретного режима зависит от программиста и от особенностей задачи, которую ему предстоит решать. В режимах packed pixel graphics достигается максимальная производительность видеосистемы, но ограничены возможности манипуляций с цветом. В режимах direct color увеличиваются затраты оперативной и видеопамяти и замедляется процесс построения графических объектов, но существенно расширяются возможности работы с цветом. Вариантов много, есть из чего выбирать.