Максимальное разрешение и количество воспроизводимых цветов конкретной видеоподсистемы в первую очередь зависят от общего объема видеопамяти и количества бит, приходящихся на один элемент изображения. Так, если для отображения одного пиксела отводится один бит, то понятно, что можно обеспечить только монохромный режим (0 или 1, есть точка или нет точки); если более одного, то имеется возможность воспроизводить либо оттенки серого за счет изменения яркости (00 — черный цвет, 01 — слабое свечение, 10 — обычное, 11 — яркое), либо цвета. Например, четырехцветный графический режим может включать поддержку черного, зеленого, красного и коричневого цветов. Разумеется, возможна и смена палитры.
Как известно, для формирования цвета элемента изображения на экране монитора обычно используются три основных цвета — R, G и В. Кроме них некоторые видеоадаптеры, работающие с уровнями ТТЛ, вырабатывают также сигнал интенсивности (яркости) изображения— Intensity. Это дает возможность реализовать так называемую 16-цветную палитру IRGB. Другие адаптеры (также с цифровыми уровнями сигналов) кодируют каждый цвет не одним, а двумя независимыми сигналами — основным (R, G или В) и дополнительным с меньшей интенсивностью (r, g или b). Все возможные комбинации позволяют отображать уже 64 цвета, хотя одновременно по-прежнему только 16, поскольку для кодирования цвета отводится всего 4 бита. Видеоадаптеры с выходным аналоговым сигналом подают на соответствующий монитор сигналы R, g| В и, разумеется, сигналы синхронизации.
Введем еще одно понятие — "видеостраница" (далее просто страница). Размер памяти, необходимой для заполнения экрана, особенно в текстовых режимах, намного меньше возможной емкости видеобуфера (128 Кбайт). Например, в текстовом режиме 3 необходимо всего около 4 Кбайт: 80x25x2 = 4000 байт (помним о том, что каждый символ занимает два байта). Именно эта величина и определяет размер страницы для режима 3. Для режима, определяющего 25 строк при 40 столбцах, размер страницы будет составлять уже около 2 Кбайт: 40x25x2 = 2000 байт. Если реальная емкость видеобуфера превышает размер одной страницы, в нем можно организовать несколько страниц, причем в любой момент времени на экран может выводиться содержимое только одной, активной (или текущей), страницы. Впрочем, остальные страницы в любой момент времени остаются доступными процессору. Например, в режиме 3 средства ROM BIOS позволяют работать с 8 страницами (0—7). Заметим, что концепция разбиения видеопамяти на страницы сохраняется и в графических режимах.
Одной из существенных особенностей некоторых видеоадаптеров является поддержка загружаемых символьных наборов, определенных, например, самим пользователем.
Как известно, в первой IBM PC на экране монитора могла отображаться только алфавитно-цифровая информация. Ни возможности вывода графики, ни тем более изменения цветов предусмотрено не было. Первый видеоадаптер имел полное название Monochrome Display and Parallel Printer Adapter (MDPPA), которое чаще использовалось в сокращенном виде — MDA. Разрешающая способность адаптера MDA позволяла отображать на мониторе 720 точек по ширине и 350 точек (пикселов) по высоте экрана. Поскольку, как уже было сказано, графического режима в адаптере предусмотрено не было, то алфавитно-цифровая информация отображалась на экране в 25 строк по 80 символов в каждой. Возможность использования таких атрибутов, как негативное изображение, повышенная яркость, подчеркивание и мерцание, в некоторой степени компенсировала отсутствие цветов.
Тем не менее, спустя всего несколько месяцев после выпуска первой "писишки" с MDA фирма IBM разработала видеоадаптер, который поддерживал не только графическое изображение, но и цвета, что, кстати, особо подчеркивалось даже в его названии. Адаптер CGA (Color Graphics Adapter) обеспечивал отображение четырех цветов при разрешающей способности 320 на 200 пикселов. Заметим, кстати, что именно в то время и появились первые игры для IBM PC.
Чуть позже стало понятно, что графика на CGA, даже цветная, не всегда удовлетворяет решаемым задачам, в частности, из-за низкой разрешающей способности. Первый видеоадаптер для IBM PC, в какой-то мере отвечавший этим нуждам, был создан на фирме Hercules в 1982 году. Этот адаптер — HGC (Hercules Graphics Card) — поддерживал на монохромном мониторе разрешение 720на 350 точек.
Новой разработкой фирмы IBM стал улучшенный графический адаптер EGA (Enhanced Graphics Adapter), который появился на свет уже в 1984 году. Этот адаптер не только позволял полностью эмулировать все режимы работ предыдущих адаптеров (MDA, CGA), но и, разумеется, обладал дополнительными возможностями. Например, при разрешающей способности 640 на 350 пикселов он мог, одновременно воспроизводить 16 цветов из палитры в 64 цвета (именно для этого адаптера использовались сигналы RrGgBb).
Несколько незаметно, по крайней мере в нашей стране, начал и закончил свое существование видеоадаптер PGA (Professional Graphics Adapter), который сделал следующий шаг в развитии возможностей адаптера EGA. Так, при разрешающей способности 640 на 480 пикселов на экране могло одновременно воспроизводиться 256 цветов из 4096 возможных.
Видеоадаптер VGA (Video Graphics Array) был объявлен фирмой IBM еще в 1987 году, и до недавнего времени он по-прежнему оставался одним из самых распространенных. При создании этого устройства была обеспечена его полная совместимость сверху вниз с адаптером (EGA, что позволило сохранить преемственность существующего программного обеспечения. Немудрено поэтому, что вскоре VGA стал фактическим стандартом, включающим в себя все режимы предыдущих адаптеров и расширяющим их возможности по разрешающей способности и количеству воспроизводимых цветов. Так, при использовании адаптера VGA обеспечивается разрешение 640 на 480 пикселов и на экране монитора может воспроизводиться 16 цветов. Все режимы, исключая графические с разрешением 640 на 480 пикселов, используют вертикальную развертку c частотой 70 Гц, что существенно снижает ощущаемое пользователем мерцание экрана. Частота развертки для режима 640 на 480 точек составляет только 60 Гц. Частота строчной развертки равняется 31,5 кГц, что, кстати, вдвое больше американского телевизионного стандарта NTSC (15,7 кГц). Основными узлами VGA-адаптера являются собственно видеоконтроллер (как правило, заказная БИС — ASIC), видеоBIOS, видеопамять, специальный цифро-аналоговый преобразователь с небольшой собственной памятью (RAMDAC, Random Access Memory Digital to Analog Converter), кварцевый осциллятор (один или несколько) и микросхемы интерфейса с системной шиной.
Создание клонов коснулось не только персональных компьютеров фирмы IBM, но и разработанных ею видеоадаптеров. Тем не менее, копирование было достаточно точным, то есть можно сказать, что соблюдался некий стандарт "по умолчанию".
1.14.1 Видеоадаптеры SVGA
После того как стало ясно, что стандарт VGA практически полностью себя исчерпал, большинство независимых разработчиков начали его улучшать как за счет увеличения разрешающей способности и количества воспроизводимых цветов, так и введения дополнительных возможностей. Например, некоторыми отличительными особенностями видеоадаптеров SVGA принято считать следующие:
- использование 16- и 256-цветных режимов с разрешением 1024 на 768 точек;
- применение новых цифро-аналоговых преобразователей RAMDAC (8 разрядов на цвет вместо 6);
- от 512 Кбайт до 4 Мбайт видеопамяти;
- поддержка аппаратного курсора;
- 16-разрядная шина данных (у VGA обычно 8);
- 16-разрядный видеоBIOS (у VGA обычно 8);
- двухпортовые микросхемы памяти (VideoRAM);
- программируемый кварцевый генератор и т.д.
Вообще говоря, прародителем SVGA можно считать фирму NEC, разработавшую VGA-совместимый графический адаптер, который имел дополнительный режим с разрешением 800 на 600 точек и одновременным отображением 256 (из 256 К возможных) цветов (табл. 5). Хотя все производители обеспечивали совместимость своих изделий с VGA, дополнительные видеорежимы и возможности адаптеров зачастую не совпадали, поскольку каждый считал нужным делать это по-своему. Немудрено, что уже само понятие SVGA, не связанное жестко с конкретными режимами работы адаптера, вносило серьезную неразбериху. В октябре 1989 года ассоциация VESA предложила свой стандарт на новые видеоадаптеры — VESA BIOS Extension, который в настоящее время поддерживается большинством фирм-производителей. Сначала VESA рекомендовала использовать режим с разрешением 800 на 600 точек и поддержкой 16 цветов как стандартный. Затем последовали 256-цветные режимы с разрешением 640 на 480, 800 на 600 и 1024 на 768 точек, а также 16-цветный режим с разрешением 1024 на 768 пикселов и т.д.
Таблица 5 Зависимость количества воспроизводимых цветов от типа видеоадаптера
Количествоцветов | Разрешения | |||||
320x200 | 640x200 | 640x350 | 640x480 | 800x600 | 1024x768 | |
2 | CGA | CGA | EGA | VGA | SVGA | SVGA |
4 | CGA | EGA | EGA | VGA | SVGA | SVGA |
16 | EGA | EGA | EGA | VGA | SVGA | SVGA |
256 | VGA | SVGA | SVGA | SVGA | SVGA | SVGA |
1.14.2 Проблемы цветопередачи
Цветовую гамму изображения можно расширить только при увеличении количества разрядов, приходящихся на один цвет. Например, стандартный VGA-режим 12h (16 цветов, 640 на 480 точек) использует 4 бита на пиксел (работает метод bit-mapped, 4 битовые плоскости), а режим 13h — 8 бит на пиксел. Количество одновременно воспроизводимых цветов подсчитывается достаточно просто: цифра 2 возводится в степень, равную количеству бит на один пиксел. Теоретически, конечно, объем памяти видеоадаптера можно увеличить до нужных размеров, чтобы использовать требуемое количество разрядов для кодирования цвета, однако в этом случае организация видеопамяти должна соответствовать определенным стандартам. Для персональных компьютеров таких стандартов создано уже несколько. Например, видеоадаптеры поддерживают одновременное воспроизведение 32 768 или 65 536 цветов. Видеорежимы, в которых используются 15 или 16 разрядов для кодирования цвета, называют HighColor. В видеоадаптерах с точной цветопередачей (достаточной даже для обработки профессиональных высококачественных фотографий) применяют 24 -разрядное кодирование цвета, по 8 разрядов на каждую составляющую. В этом случае возможно воспроизведение. 16,8 миллиона цветов одновременно (а точнее, 16 777 216). Такой видеорежим называется TrueColor.