Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KG / КГ_1глава.doc
Скачиваний:
127
Добавлен:
26.05.2014
Размер:
1.01 Mб
Скачать

1.5. Эволюция компьютерных видеосистем

Компьютерные видеосистемы рассмотрим на примере персональных компь­ютеров класса IBM PC. Первый персональный компьютер фирмы IBM по­явился в 1981 году. Сейчас уже можно сказать, что появление как раз этого компьютера привело к значительному распространению персональных ком­пьютеров. Некоторые особенности архитектуры IBM PC сохранены и по сей день (рис. 1.49).

Одной из таких особенностей, которые выгодно отличали его от других пер­сональных компьютеров, является открытость архитектуры. Это означает гибкие возможности подключения разнообразных устройств, простоту мо­дернизации компьютера. Важным фактором была цена — для IBM PC она была меньшей, чем, например, для компьютеров Apple, которые были лучше по другим показателям (в первую очередь, по графическим возможностям). Кроме того, с самого начала пользователям компьютеров семейства IBM PC были доступны разнообразные средства программирования — миллионы пользователей получили возможность сами разрабатывать программное обеспечение. Все это привело к массовому распространению таких компью­теров, использованию в разнообразных областях.

Важная черта архитектуры персонального компьютера с позиций графики — то, что контроллер видеосистемы (видеоадаптер) расположен рядом с про­цессором и оперативной памятью, так как подключен к системной шине че­рез скоростную локальную шину. Это дает возможность быстро вести обмен данными между оперативной памятью и видеопамятью. Для вывода графиче­ских изображений, в особенности в режиме анимации, нужна самая высокая скорость передачи данных. «В отличие от этого в больших компьютерах (мэйнфреймах) данные к дисплеям передавались через интерфейс канала ввода-вывода, который работает намного медленнее, чем системная шина. Большие компьютеры, как правило, работают со многими дисплеями, распо­ложенными на значительном расстоянии.

Первый компьютер IBM PC был оснащен видеоадаптером MDA (Mono­chrome Display Adapter). Видеосистема была предназначена для работы в тек­стовом режиме — отображалось 25 строк по 80 символов в каждой строке.

Год спустя небольшая фирма Hercules выпустила видеоадаптер Hercules \ Graphic Card. Он поддерживал также и графический черно-белый режим: 720x348.

Следующим шагом был видеоадаптер CGA (Color Graphic Adapter). Это первая цветная модель для IBM PC. Адаптер CGA позволял работать в цветном текстовом или графическом режимах. Далее мы будем рассматривать только графические режимы видеоадаптеров. Графических режимов для CGA было два: черно-белый 640х200 и цветной 320*200. В цветном режиме можно бы­ло отображать только четыре цвета одновременно (2 бита на пиксел).

В 1984 году появился адаптер EGA (Enhanced Graphic Adapter). Это было значительное достижение для персональных компьютеров этого типа. По­явился графический 16-цветный видеорежим 640x350 пикселов. Цвета мож­но выбирать из палитры 64 цветов. В это время уже получили распростране­ние компьютерные игры с более или менее качественной графикой и графи­ческие программы для работы. Однако шестнадцати цветов явно мало для показа изображений типа фотографий, а разрешающая способность недоста­точна для графических пакетов типа САПР. Кроме того, видеорежим 640х35О имеет еще один недостаток — различная разрешающая способность по горизонтали и вертикали — "не квадратные пикселы".

В 1987 году появились видеоадаптеры MCGA (Multi-Color Graphic Array) и VGA (Video Graphic Array). Они обеспечивали уже 256-цветные видеорежимы.

Более совершенным был адаптер VGA— он стал наиболее популярным. Адаптер VGA имел 256-цветный графический видеорежим с размерами рас­тра 320 х200. Цвета можно выбирать из палитры в 256 тысяч цветов. Это дало возможность полностью удовлетворить потребности отображения полутоно­вых черно-белых фотографий. Цветные фотографии отображались достаточ­но качественно, однако 256 цветов мало, поэтому в компьютерных играх и графических пакетах активно использовался дизеринг. Кроме того, режим 320 х200 тоже имеет различную разрешающую способность по горизонтали и вертикали. Для мониторов, которые используются в персональных компью­терах типа IBM PC, необходимо, чтобы количество пикселов по горизонтали и вертикали была в пропорции 4:3. То есть, не 320х200, а 320х240. Такого документированного видеорежима для VGA нет, однако в литературе [39] приведен пример, как создать 256-цветный видеорежим 320х240 на видео­системе VGA. Можно запрограммировать видеоадаптер, записав в его реги­стры соответствующие значения, и получить видеорежим "X" (не путать с XGA). Несколько лет тому назад автор этой книги проверял сведения, приве­денные в статье [39], и может подтвердить, что действительно, "X — видео-режим" 256 цветов 320x240 может быть установлен для любой видеосисте­мы VGA (во всяком случае, не было найдено ни одной, где этого делать нельзя).

Видеоадаптер VGA также имеет 16-цветный видеорежим 640x480. Это соот­ветствует "квадратным пикселам". Рост разрешающей способности в сравне­нии с EGA не очень большой, но ощутимый, что дает новый толчок для раз­вития графических программ на персональных компьютерах. Дальнейшее развитие видеоадаптеров для компьютеров типа IBM PC связано с повышением разрешающей способности и количества цветов. Можно отме­тить видеосистему IBM 8514, которая была предназначена для работы с па­кетами САПР. Стали появляться видеоадаптеры различных фирм, которые обеспечивали на первых порах видеорежимы 800x600, а потом и 1024x768 цветов при 16-ти цветах, и видеорежимы 640x480, 800x600 и больше для 256 цветов. Эти видеоадаптеры стали называть SuperVGA. Чуть позже появился видеоадаптер IBM XGA.

Первой достигла глубины цвета в 24 бит фирма Targa с видеоадаптером Targa24, что позволило получить на персональных компьютерах IBM PC видеорежим True Color. Такое достижение можно считать началом профес­сиональной графики на персональных компьютерах этого типа. Там, где ра­нее использовались графические рабочие станции или персональные компь­ютеры Apple Macintosh, отныне постепенно переходили на более дешевые компьютеры IBM PC. Одной из таких областей является компьютерное на­стольное издательство.

Сейчас на компьютерах IBM PC с процессором Pentium используется много типов видеоадаптеров. Все видеосистемы растрового типа. Некоторые из них позволяют устанавливать глубину цвета 32 бит на пиксел при размерах рас­тра 1600x1200 и более. Существуют стандарты на видеорежимы, установ­ленные VESA (Video Electronic Standards Association).

Параметры отображения обусловливаются не только моделью видеоадапте­ра, но и объемом установленной видеопамяти. Видеопамять персонального компьютера (VRAM — Video RAM) хранит растровое изображение, которое показывается на экране монитора. Изображение на мониторе полностью со­ответствует текущему содержанию видеопамяти. Видеопамять постоянно сканируется с частотой кадров монитора. Запись новых данных в видеопа­мять немедленно изменяет изображение на мониторе. Необходимый объем видеопамяти вычисляется как площадь растра экрана в пикселах, умножен­ная на количество бит (или байтов) на пиксел. Например, для 24-битного видеорежима 1024x768 нужна видеопамять 24x1024x768 = 18 874 368 бит = = 2.25 Мбайт.

В видеоадаптерах первых образцов количество видеопамяти вычислялось в килобайтах, например, адаптер CGA имел 16 Кбайт [6, 29]. В современных видеоадаптерах счет идет на мегабайты. Как правило, объем видеопамяти кратен степени двойки — 1, 2, 4, 8 Мбайт, встречаются также видеоадаптеры с 16 Мбайт и более. Наблюдается тенденция увеличения объемов видеопамя­ти — соответственно увеличению разрешающей способности и глубины цве­та видеосистем. В видеопамяти могут храниться несколько кадров изображе­ния — это может быть использовано при анимации. Кроме того, в некоторых видеоадаптерах предусмотрена возможность использования видеопамяти для хранения другой информации, например Z-буфера, растров текстур.

Адреса, по которым процессор обращается к видеопамяти, находятся в об­щем адресном пространстве. Например, для видеорежимов VGA 256 цветов 320x200, 16 цветов 640x480, а также для некоторых других, адрес первого байта видеопамяти равен А000:0000 (сегмент : смещение) или А0000 (абсо­лютный адрес) (рис. 1.50).

Для некоторых видеорежимов (старых образцов) используется другой адрес, например, В800:0000 для CGA 320x200. Современные видеоадаптеры обыч­но поддерживают видеорежимы, которые использовались ранее. Это делает­ся для обеспечения возможности функционирования старых программ. Каж­дый видеорежим имеет собственный номер (код).

Кроме физической организации памяти компьютера— в виде одномерного вектора байтов в общем адресном пространстве, необходимо учитывать ло­гическую организацию видеопамяти. Следует отметить, что названия "физи­ческая" и "логическая" организация могут означать разные вещи для различ­ных уровней рассмотрения. Например, если говорить о физической органи­зации памяти, то она в микросхемах выглядит совсем не как одномерный вектор байтов, а как матрица бит. Логическая организация видеопамяти зави­сит от видеорежима. В качестве примера на рис. 1.51 приведен видеорежим VGA 256 цветов 320x200 (его код 13h).

Намного сложнее логическая организация видеопамяти для видеорежима VGA 16 цветов 640x480 (код 12h), показанная на рис 1.52.

В этом видеорежиме используются четыре массива байтов памяти. Каждый массив назван битовой плоскостью, для каждого пиксела используются оди­наковые биты данных различных плоскостей. Каждая битовая плоскость имеет 80 байтов в одной строке. Плоскости имеют одинаковый адрес в памя­ти, для доступа к отдельной плоскости необходимо устанавливать индекс плоскости в соответствующем регистре видеоадаптера. Подобный способ организации видеопамяти используется во многих других видеорежимах, он позволяет, например, быстро копировать массивы пикселов.

Для сохранения нескольких кадров изображения в некоторых видеорежимах предусматриваются отдельные страницы видеопамяти с одинаковой логиче­ской организацией. Тогда можно изменять стартовый адрес видеопамяти — это приводит к сдвигу изображения на экране. Во всех графических видео­режимах стартовый адрес видеопамяти соответствует левому верхнему пик­селу на экране. Поэтому координатная система с центром координат (0,0) в левом верхнем углу растра часто используется в качестве основной (или устанавливается по умолчанию) во многих графических интерфейсах про­граммирования, например, в API Windows.

fОбмен данными по системной шине для видеосистемы обеспечивают процессор, видеоадаптер и контроллер локальной шины. До недавнего времени для подключения видеоадаптеров использовалась локальная шина PCI | (Peripheral Component Interconnect local bus). Шина PCI предназначена не только для графики, она является стандартом подключения самых разнооб­разных устройств, например, модемов, сетевых контроллеров, контроллеров интерфейсов. Эта шина— 32-битная, работает на частоте 33 МГц, скорость обмена до 132 Мбайт/с.

В настоящее время видеоадаптеры подключаются через локальную шину AGP (Accelerated Graphics Port). Разрядность — 64 бит. На частоте 66 МГц обеспечивала скорость обмена 528 Мбайт/с. Сейчас AGP работает и на более высоких частотах. Шина AGP была разработана для повышения скорости обмена данными между видеоадаптером и оперативной памятью в сравнении с возможностями шины PCI. Это позволяет достичь большей частоты кадров при работе графических ЗБ-акселераторов. Высокая скорость обмена с опе­ративной памятью также позволяет хранить в этой памяти растровые тексту­ры (ранее для этого часто использовалась видеопамять, однако она обычно имеет недостаточную для этого емкость). Наличие AGP-порта также приво­дит к возрастанию быстродействия компьютера в целом благодаря уменьше­нию нагрузки на шину PCI, что дает возможность эффективнее использовать последнюю для работы с сетью, мультимедиа.

Современные видеоадаптеры представляют собой сложные электронные уст­ройства. Кроме видеопамяти, на плате видеоадаптера (сейчас его часто назы­вают видеокартой) располагается мощный специализированный графический процессор, который по сложности уже приближается к центральному про­цессору. Кроме визуализации содержимого видеопамяти графический про­цессор видеоадаптера выполняет как относительно простые растровые опе­рации — копирование массивов пикселов, манипуляции с цветами пикселов, так и более сложные. Там, где ранее использовался исключительно цен­тральный процессор, в данное время все чаще применяется графический процессор видеоадаптера, например, для выполнения операций графического вывода линий, полигонов. Первые графические процессоры видеоадаптеров выполняли преимущественно операции рисования плоских элементов. Со­временные графические процессоры выполняют уже много базовых опера­ций ЗБ-графики, например, поддержку Z-буфера, наложение текстур и тому подобное. Видеоадаптер выполняет эти операции аппаратно, что позволяет намного ускорить их в сравнении с программной реализацией данных операций центральным процессором. Так появился термин графические акселе­раторы. Быстродействие таких видеоадаптеров часто измеряется в количест­ве графических элементов, которые рисуются за одну секунду. Современные графические акселераторы способны рисовать миллионы треугольников а секунду. Возможности графических акселераторов сейчас активно используются разработчиками компьютерных игр.

Широка номенклатура видеоадаптеров для персональных компьютеров. Не­сколько примеров. Видеоадаптеры Matrox (качественная двумерная графика), NVidia GeForce (игровые ЗО-акселераторы), 3Dlabs Wildcat (для профессио­нального ЗБ-моделирования).

Использование программистами графических возможностей видеосистемы может осуществляться различно. Во-первых, простейшие операции, такие как определение графического видеорежима, вывод пиксела на экран и неко­торые другие, поддерживаются BIOS. Во-вторых, можно использовать функ­ции операционной системы. Различные операционные системы могут пре­доставлять различные возможности. Например, в MS-DOS графических функций почти не было, однако программисту был разрешен свободный дос­туп ко всем аппаратным ресурсам компьютера. В быстродействующих гра­фических программах часто использовался непосредственный доступ к ви­деопамяти. В отличие от этого, операционная система Windows запрещает прикладным программам непосредственный доступ к аппаратным ресурсам, однако можно применять несколько сотен графических функций операцион­ной системы — интерфейс API. В-третьих, можно использовать специализи­рованные графические интерфейсы, которые поддерживают аппаратные воз­можности современных графических процессоров.

Одним из наиболее известных графических интерфейсов является OpenGL. Этот интерфейс в виде библиотеки графических функций был разработан Silicon Graphics, и поддерживается многими операционными системами (в том числе Windows), а также производителями графических акселерато­ров. Интерфейс OpenGL для графического отображения использует взаимо­действие типа клиент-сервер [25, 61].

Другим известным графическим интерфейсом является DirectX с подсисте­мой трехмерной графики Direct3D, а также подсистемой Direct Draw, которая обеспечивает, в частности, непосредственный доступ к видеопамяти. Этот интерфейс разработан Microsoft и предназначен только для Windows [26]. Известны также другие разработки графических интерфейсов для видеоадап­теров. Например, интерфейс GLide, разработанный 3Dfx для графических видеоадаптеров семейства Voodoo (впрочем, это уже история, поскольку фирма 3Dfx недавно прекратила свое существование как изготовитель видео­адаптеров).

Соседние файлы в папке KG