Конспект лекций по компьютерной графике. Конспект лекций по дисциплине Компьютерная графика
Скачать 16.3 Mb.
|
Глава 12. Технические средства КГ (оборудование КГ)Чаще всего, после того, как изображение возникло на мониторе, пользователь каким-либо образом должен взаимодействовать с ним: модифицировать, передвигать, управлять. Для этого существует ряд устройств, о которых будет рассказано в этой главе. 12.1 ВидеоадаптерыВажной чертой архитектуры персонального компьютера с позиций графики является то, что контроллер видеосистемы (видеоадаптер) расположен рядом с процессором и оперативной памятью и подключен к системной шине через быструю локальную шину. Это дает возможность быстро вести обмен данными между оперативной памятью и видеопамятью (для вывода графических изображений, в особенности в режиме анимации, нужна высочайшая скорость передачи данных). В отличие от этого, в больших компьютерах (мейн-фреймах) данные к дисплеям передавались через интерфейс канала ввода-вывода, который работает намного медленнее системной шины. Большие компьютеры, как правило, работали со многими дисплеями, расположенными на значительном расстоянии. Первый компьютер IBM PC был оснащен видеоадаптером MDA {Monochrome Display Adapter). Видеосистема была предназначена для работы в текстовом режиме — отображались 25 строк по 80 символов в каждой строке. Через год небольшая фирма Hercules выпустила видеоадаптер HerculesGraphicCard. Он поддерживал также и графический черно-белый режим 720x350. Следующим шагом был видеоадаптер CGA {Color Graphic Adapter). Это первая цветная модель для IBM PC. Адаптер CGA позволял работать в цветных текстовом или в графическом режимах. Далее мы будем рассматривать только графические режимы видеоадаптеров. Графических режимов для CGA было два: черно-белый 640x200 и цветной 320x200. В цветном режиме можно было отображать одновременно только четыре цвета (2 бита на пиксел). В 1984 году появился адаптер EGA {Enhanced Graphic Adapter). Это было значительное достижение для персональных компьютеров рассматриваемого типа. Появился графический 16-цветный видеорежим 640x350 пикселов. Цвета можно было выбирать из палитры 64 цветов. В это время начали распространяться компьютерные игры с более или менее качественной графикой и графические программы для работы. Однако шестнадцати цветов явно мало для отображения фотографий, а разрешающая способность недостаточна для графических пакетов типа САПР. Кроме того, видеорежим 640x350 имеет еще один недостаток — разная разрешающая способность по горизонтали и вертикали — "неквадратные пикселы". В 1987 году появились видеоадаптеры MCGA {Multi-Color Graphic Array) и VGA {Video Graphic Array). Они обеспечивали уже 256-цветные видеорежимы. Более популярным стал видеоадаптер VGA. Адаптер VGA имел 256-цветный графический видеорежим с размерами растра 320x200. Цвета можно было выбирать из палитры в 256 тысяч цветов. Это дало возможность полностью удовлетворить потребности отображения черно-белых (в 256 градациях серого) фотографий. Цветные фотографии отображались достаточно качественно, однако 256 цветов мало, поэтому в компьютерных играх и графических пакетах активно использовался дизеринг. Кроме того, режим 320x200 тоже имеет разную разрешающую способность по горизонтали и вертикали. Для мониторов, которые использовались в персональных компьютерах типа IBM PC, необходимо, чтобы количество пикселов по горизонтали и вертикали было в пропорции 4:3. То есть, не 320x200, а 320x240. Такого документированного видеорежима для VGA нет, однако в литературе приведен пример, как создать 256-цветный видеорежим 320x240 на видеосистеме VGA. Можно запрограммировать видеоадаптер, записав в его регистры соответствующие значения, и получить видеорежим "X" (не путать с XGA). Видеоадаптер VGA также имеет 16-цветовой видеорежим 640x480. Это соответствует "квадратным пикселам". Увеличение разрешающей способности в сравнении с EGA не очень большое, но ощутимое, что дало новый толчок для развития графических программ на персональных компьютерах. Дальнейшее развитие видеоадаптеров для компьютеров типа IBM PC связано с увеличением разрешающей способности и количества цветов. Можно отметить видеосистему IBM 8514, которая была предназначена для работы с пакетами САПР. Начали появляться видеоадаптеры разных фирм, которые обеспечивали сначала видеорежимы 800x600, а потом и 1024x768 при 16-ти цветах, а также видеорежимы 640x480, 800x600 и более — для 256 цветов. Эти видеоадаптеры стали называть SuperVGA, Чуть позже появился видеоадаптер IBM XGA. Первой достигла глубины цвета в 24-6ит фирма Truevision с видеоадаптером Targa 24, что позволило получить на персональных компьютерах IBM PC видеорежим True Color. Такое достижение можно считать началом профессиональной графики на персональных компьютерах этого типа. Там, где раньше использовали графические рабочие станции или персональные компьютеры Apple Macintosh, отныне постепенно переходили на более дешевые компьютеры IBM PC. Одной из таких областей было компьютерное "настольное" издательство. Сейчас на персональных компьютерах используется много типов видеоадаптеров. Все видеосистемы — растрового типа. Они позволяют устанавливать глубину цвета до 32 битов на пиксел при размерах растра 1600x1200 и больше. Существуют стандарты на видеорежимы, регламентированные VESA{Video Electronic Standards Association). Параметры отображения обуславливаются не только моделью видеоадаптера, но и объемом установленной видеопамяти. Видеопамять персонального компьютера {VRAM— Video RAM) сохраняет растровое изображение, которое демонстрируется на экране монитора. Изображение на мониторе полностью соответствует текущему содержимому видеопамяти. Видеопамять постоянно сканируется с частотой кадров монитора. Запись новых данных в видеопамять мгновенно изменяет изображение на мониторе. Необходимый объем видеопамяти рассчитывается как площадь растра экрана в пикселах, умноженная на количество битов (или байтов) на пиксел. Например, для 24-битного видеорежима 1024x768 нужно видеопамяти: 24x1024x768 = 18.874.368 битов = 2.25 Мбайт. В видеоадаптерах первых образцов количество видеопамяти исчислялось килобайтами, например, адаптер CGA имел 16 Кбайт. В современных видеоадаптерах счет идет на мегабайты. Обычно объем видеопамяти кратен степени двойки — 1, 2, 4, 8 Мбайт (в настоящее время — от 32 Мбайт и больше). Наблюдается тенденция увеличения объемов видеопамяти. Основным фактором здесь уже не является глубина цвета. Видеопамять сейчас используется не только как кадровый буфер — она может сохранять текстуры, Z-буфер и т. п. Адреса, по которым процессор обращается к видеопамяти, находятся в общем адресном пространстве. Например, для многих видеорежимов VGA адрес первого байта видеопамяти равняется А0000. Для некоторых видеорежимов старых образцов используется другой адрес, например, В8000 для CGA 320x200. Современные видеоадаптеры обычно поддерживают видеорежимы, которые использовались ранее. Это делается для обеспечения возможности функционирование старых программ. Каждый видеорежим имеет собственный номер (код) согласно со стандартом VESA. Кроме физической организации памяти компьютера — в виде одномерного вектора байтов в общем адресном пространстве, необходимо учитывать логическую организацию Рис.12.1. Один байт на пиксел для VGA 320x200 видеопамяти. Следует отметить, что названия "физическая" и "логическая" организация могут означать совсем разные вещи для разных уровней рассмотрения. Например, если говорить о физической организации памяти, то она в микросхемах выглядит совсем не как одномерный вектор байтов, а как матрица битов. Логическая организация видеопамяти зависит от видеорежима. В качестве примера на рис. 1.52 приведена логическая организация для видеорежима VGA256 цветов 320x200 (его код 13h). Намного сложнее логическая организация видеопамяти для видеорежима Рис. 12.2. Четыре битовых плоскости для видеорежима 16 цветов 40x480 VGA16 цветов 640x480 (код 12h), которая показана на рис. 12.2. Каждая битовая плоскость имеет 80 байтов в одном строке. Плоскости имеют одинаковый адрес в памяти, для доступа к отдельной плоскости необходимо устанавливать индекс плоскости в соответствующем регистре видеоадаптера. Подобный способ организации видеопамяти используется во многих других видеорежимах, он позволяет, например, быстро копировать массивы пикселов. В этом видеорежиме используются четыре массива байтов памяти. Каждый массив назван битовой плоскостью, для любого пиксела используются одинаковые биты данных разных плоскостей. Для хранения нескольких кадров изображения в некоторых видеорежимах предусматриваются отдельные страницы видеопамяти с одинаковой логической организацией. Тогда можно изменять стартовый адрес видеопамяти — это приводит к сдвигу изображения на экране. Во всех графических видеорежимах стартовый адрес видеопамяти соответствует левому верхнему пикселу на экране. Поэтому координатная система с центром координат (0, 0) в левом верхнем углу растра часто используется в качестве основной (или устанавливается по умолчанию) во многих графических интерфейсах программирования, например, в GDI API Windows. Обмен данными по системной шине для видеосистемы обеспечивают процессор, видеоадаптер и контроллер локальной шины. До недавнего времени для подключения видеоадаптеров использовалась локальная шина PCI{Peripheral Component Interconnect local bus). Шина PCI предназначена не только для графики, она является стандартом присоединения разнообразнейших устройств, например, модемов, сетевых контроллеров, контроллеров интерфейсов. Эта шина — 32-битная, работает на частоте 33 Мгц, скорость обмена до 132 Мбайт/с. В настоящее время видеоадаптеры подключаются через локальную шину AGP {Accelerated Graphics Port). Разрядность — 64 бит. На частоте 66 Мгц обеспечивала скорость обмена 528 Мбайт/с. Сейчас работает и на более высоких скоростях. Шина AGP была разработана для повышения скорости обмена данными между видеоадаптером и оперативной памятью по сравнению с возможностями шины PCI. Это позволяет достичь большей частоты кадров при работе ЗD-акселераторов. Наличие AGP-порта также приводит к росту быстродействия компьютера в целом благодаря уменьшению нагрузки на шину PCI, что дает возможность более эффективно использовать последнюю для работы с другими внешними устройствами. Современные видеоадаптеры представляют собой сложные графические устройства. На плате видеоадаптера (сейчас его часто называют видеокартой) располагается мощный специализированный графический процессор (GPU — GraphicProcessorUnit), который по сложности приближается к центральному процессору. Кроме визуализации кадрового буфера графический процессор видеоадаптера выполняет как относительно простые растровые операции (копирование массивов пикселов, манипуляции с цветами пикселов), так и более сложные. Там, где раньше использовался исключительно центральный процессор, теперь все чаще применяется графический процессор видеоадаптера, например, для выполнения операций графического вывода линий, полигонов. Первые графические процессоры видеоадаптеров выполняли преимущественно операции рисования плоских элементов. Современные графические процессоры выполняют уже много базовых операций ЗD-графики, например, поддержку Z-буфера, наложение текстур и т. п. Видеоадаптер выполняет эти операции аппаратно, что позволяет намного ускорить их в сравнении с программной реализацией данных операций центральным процессором. Так появился термин графические акселераторы. Быстродействие таких видеоадаптеров часто измеряется количеством графических элементов, которые рисуются за одну секунду. Современные графические акселераторы способны рисовать миллионы треугольников за секунду. Этим "интеллектуальность" видеоадаптеров не ограничивается. Недавно появились модели, которые, кроме относительно простых неизменных базовых операций, способны сами выполнять небольшие программы, которые могут составлять пользователи. Эти программы называются "шейдерами" (shaders). Такие возможности графических акселераторов сейчас активно используются разработчиками компьютерных игр. На рис.12.3 представим общую структуру современного видеоадаптера. Рис. 12.3. Общая структура видеоадаптера Номенклатура видеоадаптеров для персональных компьютеров широка. Несколько примеров: видеоадаптеры Matrox (качественная двумерная графика), ATI Radeon, NVidia (профессиональные и игровые ЗD-акселераторы). Использование программистами графических возможностей видеосистемы может осуществляться по-разному. Во-первых, простейшие операции, такие, как определение графического видеорежима, вывод пиксела на экран и некоторые другие, поддерживаются BIOS. Во-вторых, можно использовать функции операционной системы. Разные операционные системы могут предоставлять разные возможности. Например, в MS-DOS графических функций почти не было, однако программисту был разрешен свободный доступ ко всем аппаратным ресурсам компьютера. В быстродействующих графических программах часто использовался непосредственный доступ к видеопамяти. В отличие от этого, операционная система Windows запрещает прикладным программам непосредственный доступ к аппаратным ресурсам, однако можно применять несколько сотен графических функций операционной системы — интерфейс GDI API. В-третьих, можно использовать специализированные графические интерфейсы, которые поддерживают аппаратные возможности современных графических процессоров. Один из известнейших графических интерфейсов — OpenGL. Этот интерфейс в виде библиотеки графических функций был разработан Silicon Graphics и поддерживается многими операционными системами (в том числе Windows) и производителями графических акселераторов. Интерфейс OpenGL для графического отображения использует взаимодействие типа клиент-сервер. Другим известным графическим интерфейсом является DirectX. Этот интерфейс разработан Microsoft и предназначен только для ОС Windows. |