Графические устройства

         

Видеорежимы VESA



Таблица 1. 1. Видеорежимы VESA



Код режима Количество точек в строке Количество строк по вертикали Размер точки в битах Размер строки в байтах Количество цветов
VESA редакции 1.0 и 1.1
100h 640 400 8 640 256
101h 640 480 8 640 256
102h 800 600 4 100 16
103h 800 600 8 800 256
104h 1024 768 4 128 16
105h 1024 768 8 1024 256
106h 1280 1024 4 160 16
107h 1280 1024 8 1280 256
108h 80 60 160 16
109h 132 25 - 264 16
10Ah 132 43 - 264 16
10Bh 132 50 264 16
10Ch 132 60 - 264 16
VESA peдакции 1.2
10Dh 320 200 15 640 32К
1QEh 320 200 16 640 64К
10Fh 320 200 32/24 1280/960 16М
110h 640 480 15 1280 32К
111h 640 480 16 1280 64К
11 2h 640 480 32/24 2560/1920 16М
113h 800 600 15 1600 32К
114h 800 600 16 1600 64К
115h 800 600 32/24 3200/2400 16М
116h 1024 768 15 2048 32К
117h 1024 768 16 2048 64К
118h 1024 768 32/24 4096/3072 16М
119h 1280 1024 15 2560 32К
11Ah 1280 1024 16 2560 64К
11Bh 1280 1024 32/24 5120/3840 16М

В первом столбце табл. 1.1 перечислены коды видеорежимов. Это шестнад-цатеричные числа, поэтому в их записи могут встречаться не только цифры, но и латинские буквы от А до F, а в конце кода обязательно указывается латинская буква n (lOOh = 256). В остальных столбцах таблицы приведены десятичные числа. В последнем столбце, для сокращения записи количества цветов, использованы буквы к и м. Они обозначают степени числа два, наиболее близкие по значению к тысяче (к=1024) и миллиону (м=Ю4857б). Соответственно, количество цветов может быть следующим:
32К = 32768, 64К = 65536, 16М = 16777216.

В графических режимах размер строки указан в точках, а в текстовых — в виде количества символов. В текстовых режимах ширина символов постоянна и составляет 8 точек, а высота — 8 или 16 точек.
Классификация режимов. Перечисленные в табл. 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 увеличиваются затраты оперативной и видеопамяти и замедляется процесс построения графических объектов, но существенно расширяются возможности работы с цветом. Вариантов много, есть из чего выбирать.



Содержание раздела