
- •Структура и состав средств компьютерной графики
- •Технические средства компьютерной графики
- •Принципы формирования графического изображения на экране дисплея
- •Интерфейсные шины
- •Разновидности видеоадаптеров
- •Цвет в компьютерной графике
- •Растровые форматы
- •Векторные и метафайловые форматы
- •Сжатие графических данных
- •Современные графические API-интерфейсы
- •API Microsoft DirectX
- •API OpenGL
- •API Fahrenheit
зуются более высокой степенью сжатия, чем изображения с низким содержанием таких элементов (например, графики, схемы, простые текстуры). Изображения с высоким разрешением можно сжимать с высокой степенью сжатия, не влияя на их качество. Для сохранения высокого качества изображений с низким разрешением итоговая степень сжатия должна быть гораздо ниже. Изображения с большой глубиной цвета (например, 24-битовые Truecolor-изображения) сжимаются более эффективно, чем изображения с меньшим количеством бит на пиксель (в частности, 8-битовые полутоновые).
Большинство других методов сжатия с потерями по своему характеру симметричны. Это значит, что они основаны на использовании конкретной последовательности операций, которые при распаковке выполняются в обратном порядке. На сжатие и распаковку данных требуется приблизительно одинаковое время. Фрактальное сжатие – процесс асимметричный, сжатие длится гораздо дольше, чем распаковка. Отсюда следует, что фрактально сжатые данные целесообразно применять в тех случаях, когда файлы изображений часто распаковываются, но никогда не сжимаются, например, при хранении изображений в графических базах данных на CD-ROM.
Ниже кратко рассмотрены некоторые наиболее распространенные форма-
ты.
Современные графические API-интерфейсы
Разработка современных сложных графических программ, особенно 3Dприложений, неразрывно связана с использованием API-интерфейсов
(Application Programming Interface).
API – это набор библиотек, представляющих собой готовый интерфейс для работы программы с 3D-акселераторами. В настоящее время подобных ин-
44
терфейсов существует достаточно много, но все их можно разделить на два класса: универсальные и специализированные.
Универсальные API являются общими для всех 3D-акселераторов, а поддержка аппаратного ускорения для этих API возлагается на сами ускорители. В первую очередь здесь следует выделить Microsoft DirectX и OpenGL. Оба они используются, в основном, в программах компьютерной анимации.
Специализированные API предназначены для работы с графическими акселераторами, построенными на определенных 3D-чипсетах; наиболее известными среди них являются Glide API – интерфейс для работы с чипами VooDoo®; Metal – для чипов Savage3D и т.п. Программы, написанные с использованием специализированных API, работают только на тех акселераторах, под которые создавались эти API. Большинство специализированных API предоставляет только низкоуровневый интерфейс программирования, однако в последнее время, новые версии DirectX включают интерфейсы высокоуровневой поддержки, такие как DirectX for VisualBasic, который осуществляет языковую поддержку мультимедиа-приложений, написанных в среде визуального программирования Visual Basic.
API Microsoft DirectX
API Microsoft DirectX – это набор программных интерфейсов, применяемых для решения различных задач: от программного управления аппаратным обеспечением компьютера до разработки мультимедийных приложений, использующих различные типы информации, и создания виртуальных миров.
Основная цель, которую преследовала фирма Microsoft, создавая интерфейс DirectX – превратить компьютеры, работающие под управлением операционной системы Windows, в универсальную платформу для приложений, богатых мультимедийными элементами: полноцветной графикой, видеофрагмен-
45
тами, трехмерной анимацией и стереозвуком. Встроенный непосредственно в ядро ОС Windows интерфейс DirectX является интегрированным сервисом
Windows 98 и Windows 2000, а также Microsoft Internet Explorer. Компоненты
DirectX могут быть также автоматически загружены на компьютер при установке современных игр и мультимедийных приложений, разработанных для ОС Windows 95. Для разработчиков DirectX представляет набор программных интерфейсов, использование которых позволяет решить две основные задачи.
Во-первых, DirectX превращает разработанные с его помощью приложения в программы, совместимые с любой версией Windows и работающие на любом компьютере, где установлена эта операционная система, независимо от типа используемого программного обеспечения. При этом подобные приложения максимально используют технические возможности компьютера, обеспечивая наивысшую производительность. Это достигается за счет сервиса, предоставляемого двумя основными компонентами DirectX: низкоуровневыми интерфейсами, входящими в состав DirectX Foundation, и высокоуровневыми интерфейсами, составляющими DirectX Media.
Во-вторых, DirectX предоставляет разработчикам возможность абстрагироваться от конкретного типа дисплейного адаптера, звуковой карты или 3Dускорителя и сосредоточиться на логике работы самой программы.
DirectX Foundation предоставляет в распоряжение разработчиков набор низкоуровневых программных интерфейсов, который обеспечивает эффективный доступ ко всем возможностям компьютера, работающего под управлением ОS Windows, реализованным на уровне аппаратного обеспечения – 3Dускорителям, звуковым картам, устройствам ввода информации. До появления DirectX разработчики, создававшие мультимедийные приложения для платформы Windows, должны были настраивать свои программы на работу с различными типами устройств и конфигураций. Теперь эта проблема устранена. DirectX Foundation содержит компонент, известный как "слой аппаратной абстракции" (Hardware Abstraction Layer, HAL), который использует программные
46
драйверы для обеспечения взаимодействия программных и аппаратных средств. В результате разработчики могут создавать единую версию приложения с использованием интерфейсов DirectX, не заботясь о том, чтобы оно работало на конкретных аппаратных конфигурациях. DirectX автоматически определяет технические возможности компьютера и устанавливает соответствующие параметры. DirectX также позволяет выполнять мультимедийные приложения, требующие аппаратной поддержки, отсутствующей на данном компьютере. В этом случае они программно эмулируются компонентом, который называется "слой аппаратной эмуляции" (Hardware Emulation Layer, HEL) и обеспечивает программные драйверы, работающие как недостающие устройства.
DirectX Media располагается над DirectX Foundation и обеспечивает высокоуровневые сервисы – поддержку анимации, потоковый вывод (возможность передачи и просмотра аудио- и видеоинформации по мере ее загрузки из Internet) и интерактивность. Автоматическая интеграция низкоуровневых сервисов, реализуемых DirectX Foundation, и высокоуровневых, реализованных в DirectX Media, облегчает процесс создания и воспроизведения мультимедийных элементов, позволяя разработчикам включать их в свои приложения и Web-страницы и обеспечивая тем самым недоступное ранее интерактивное мультимедийное содержимое. Кроме того, DirectX Media помогает решить задачу координации различных типов мультимедийных эффектов, облегчая синхронизацию их воспроизведения. Помимо двух указанных основных составляющих Microsoft DirectX в их состав также входят высокоуровневые компоненты, которые обеспечивают мультимедийные функции для Webприложений. К ним относятся: NetMeeting - средство для организации групповых онлайновых дискуссий и Windows Media Player - средство для передачи мультимедийного содержимого по Internet. Рассмотрим кратко основные ком-
поненты DirectX Foundation. К ним относятся Microsoft DirectDraw, Direct3D (режимы Immediate и Retained), DirectInput, DirectMusic, DirectSound,
DirectSound 3D и DirectPlay. Эти программные интерфейсы системного уровня
47

обеспечивают эффективный доступ к различным компьютерным устройствам и обеспечивают реальную аппаратную независимость приложений, снимая проблемы установки драйверов и несовместимости аппаратно-программных платформ.
Microsoft Direct3D представляет собой интерфейс для работы с 3Dвидеокартами. Архитектура Direct3D представлена на рисунке 1.5.
Win32-приложение
Direct3D |
Retained Mode |
DirectDraw/Direct3D |
Immediate Mode |
Программная |
Эмуляция |
Рисунок 1.5 – Архитектура Direct3D |
Direct3D поддерживает два режима работы – Immediate Mode и Retained Mode. В режиме Immediate Mode Direct3D обеспечивает разработчикам аппаратную поддержку игровых и мультимедийных приложений в среде Microsoft Windows. Он позволяет добиться аппаратной независимости, поддерживает переключаемую Z-буферизацию и Intel ММХ-архитектуру процессоров. В этом режиме основные графические примитивы реализуются напрямую, без использования буферов выполнения (execute buffers).
Режим Retained Mode облегчает создание и анимацию трехмерных миров, поддерживая две новые функции: интерполяторы анимации со смешением цветов, плавными перемещениями объектов и множеством различных видов трансформации, а также последовательное заполнение сеточной структуры 3D-
48
объектов (meshes), позволяющее осуществлять их постепенную загрузку с удаленных серверов. Это дает возможность разработчикам эффективно использовать трехмерную графику, освобождая их от необходимости прямого управления структурами объектов на низком уровне.
Следует отметить, что Direct3D-приложения общаются с графическими устройствами одинаково, вне зависимости от режима. Они могут использовать или не использовать программную эмуляцию перед обращением к HAL. Реально Direct3D тесно интегрирован с компонентом DirectDraw, поэтому на рисунке 1.2 слой аппаратной абстракции HAL обозначен как DirectDraw/Direct3D HAL. Direct3D осуществляет Z-буферизацию и рендеринг поверхностей, а их непосредственное отображение выполняет DirectDraw. СОМ-интерфейс Direct3D является интерфейсом к DirectDraw.
DirectDraw - это менеджер управления памятью, обеспечивающий базовый набор функций для графических и мультимедийных приложений, работающих на платформе Windows. В отличие от традиционной Windows-графики DirectDraw использует прямой доступ к дисплейной памяти и графическим устройствам, обеспечивая при этом полную совместимость с Windowsприложениями.
На рисунке 1.6 показано взаимодействие между DirectDraw, компонентом ядра операционной системы GDI (Graphics Device Interface), слоем аппаратной абстракции (Hardware Abstraction Layer, HAL), и слоем аппаратной эмуляции
(Hardware Emulation Layer, HEL). Как видно, DirectDraw существует независи-
мо от GDI и оба интерфейса обладают возможностью прямого доступа к графическим устройствам через аппаратно-независимые слои. В отличие от GDI DirectDraw no возможности использует аппаратные функции. Если конкретное устройство не поддерживает требуемых функций, DirectDraw пытается их эмулировать, используя HEL. DirectDraw поддерживает работу с большим числом дисплейных адаптеров - от простых мониторов до сложных профессиональных устройств. Работая на уровне графических поверхностей, DirectDraw служит
49

базой для высокоуровневых графических функций и интерфейсов и позволяет использовать либо аппаратные возможности, предоставляемые устройствами, либо эмулировать их при необходимости.
Win32-приложение
|
Graphics Device |
|
|
DirectDraw |
||
|
Interface (GDI) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Display Device |
|
|
Hardware Emula- |
|
|
|
Iterface (DDI) |
|
tion Layer (HEL) |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
Hardware |
|
|
|
|
|
|
Abstraction Layer |
|
|
|
|
|
|
(HAL) |
|
|
|
|
|
|
|
|
Видеокарта
Рисунок 1.6 – Интеграция DirectDraw в систему
DirectInput представляет собой интерфейс к различным устройствам ввода информации - клавиатуре, манипулятору типа «мышь», джойстику, а также к устройствам с обратной отдачей (force-feedback). По сравнению с обычными, стандартными функциями данный интерфейс поддерживает большее число устройств и обеспечивает более быструю реакцию на запросы. Работая непосредственно с драйверами устройств, DirectInput не использует систему обмена сообщениями Microsoft Windows.
К новым возможностям DirectInput относится расширенный список поддерживаемых устройств, в том числе: игровые панели (game pads), авиацион-
ные рули (flight yokes), шлемы виртуальной реальности (virtual-reality headgear)
50
иустройства с обратной отдачей, обеспечивающие такие эффекты как вибрация, сопротивление при движении и т.д., использование которых делает современные игры еще более реалистичными.
DirectMusic – это новый компонент семейства технологий DirectX, представляющий собой программную оболочку для создания музыкальных шаблонов и инструкций по реакции на действия пользователя. Это позволяет разработчикам создавать фоновую музыку в реальном времени на основе алгоритмов, задаваемых в Web-страницах или мультимедийных приложениях. DirectMusic обеспечивает полную реализацию стандарта DownLoadable Sounds (DLS), позволяющего разработчикам создавать музыкальные шаблоны, воспроизводимые практически на любой аппаратной платформе. В состав DirectMusic входит DirectMusic Producer - интегрированный редактор, позволяющий работать со всеми объектами DirectMusic: стилями, шаблонами, DLSинструментами и т.д.
DirectPlay представляет собой высокоуровневый программный интерфейс между прикладной программой и коммуникационными сервисами, который упрощает связь по модему или локальной сети. В состав DirectPlay входит набор утилит, позволяющий играющим находить партнеров и Web-узлы, поддерживать поток информации между серверами, причем для любого пользователя приложения поддерживается одинаковый набор функций, независимо от типа онлайнового сервиса или протоколов.
Вдополнение к низкоуровневым интерфейсам DirectX Foundation в состав DirectX входит более высокоуровневый набор программных интерфейсов
икомпонентов DirectX Media, обеспечивающих поддержку мультимедийных приложений, анимации и потокового вывода информации. В настоящее время DirectX Media состоит их следующих основных программных интерфейсов:
DirectShow (ранее назывался ActiveMovie SDK); DirectAnimation (ранее назывался ActiveX Animation); DirectX Transform. Отметим, что сервисы DirectX Media используют сервисы DirectX Foundation.
51