Программные средства трехмерной графики 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Программные средства трехмерной графики



API u GDI. Мультимедийные технические средства (а осо­бенно компьютерная графика) — наиболее быстро развиваю­щаяся область промышленности ПК, где с высокими темпами постоянно возникают новые чипсеты, версии интерфейсных карт, устройства и принципы технологий. Для прикладного про­граммиста, занимающегося разработками мультимедийных при­ложений или компьютерных игр, становится совершенно нере­альным заново переписывать все программы с появлением на рынке карт с новыми графическими процессорами, поддерживающими высокопроизводительные технологии мультимедиа с аппаратным ускорением (графические/видеоакселераторы).

Программный интерфейс приложения. В каче­стве решения появились программные интерфейсы приложений (API, application programming interface), которые играют роль посредника между прикладной программой и аппаратными средст­вами ЭВМ (интерфейсная карта и внешнее устройство), на кото­рых она выполняется. Разработчик программного обеспечения пишет обращение к устройству на некотором стандартизированном языке, а не в кодах аппаратных средств ЭВМ. Затем драй­вер, написанный изготовителем периферийного устройства или его карты, переводит этот стандартный код к формату, понятно­му специфической модели периферийных устройств (рис. 3.26).

API-интерфейсы обеспечивают доступ к новейшим возмож­ностям высокопроизводительных устройств, таких как микро­схемы ускорения трехмерной графики и звуковые платы. Эти интерфейсы управляют функциями нижнего уровня, в том числе ускорением двумерной графики, поддержкой устройств ввода, таких, как джойстик, клавиатура и мышь, а также микширова­нием и выводом звука.

Графический интерфейс устройства (Graphics Device Interface — GDI) является стандартом Microsoft Windows, который описывает, как следует представлять графические объ­екты для передачи их на устройства вывода типа мониторов или принтеров.

GDI поддерживает такие задачи, как рисование линий, пред­ставление шрифтов и обработка палитр. Он не занимается непо­средственно формированием окон, меню и т. д., эти задачи ос­тавлены для подсистемы пользователя (user32.dll), которая является надстройкой над GDI.

Существенная способность GDI (кроме более прямых мето­дов обращения к аппаратным средствам) — масштабирование и абстрагирование от оконечных устройств. Используя GDI, можно достаточно просто осуществлять вывод изображений на различные устройства (мониторы, принтера) и ожидать надлежащего результата в каждом случае. Эта способность обеспечивает все приложения WYSIWYG для Microsoft Windows.

Простые игровые программы, которые не требуют быстрой Работки графики, могут обходиться возможностями GDI. Однако более современные игры должны использовать API DirectX или OpenGL, которые дают возможность программистам более интенсивно использовать аппаратные средства.

С появлением Windows XP GDI заменяется преемником — подсистемой GDI+, базирующейся на C++. GDI+ — следующее поколение двумерной графической среды, включающее такие расширенные особенности, как двумерная графика со сглажива­нием, координаты с плавающей запятой, альфа-смешивание, градиентное затушевывание, поддержка современных форматов графических файлов наподобие JPEG и PNG (которые заметно отсутствовали в GDI), и общая поддержка перечня аффинных преобразований в конвейере двумерного рендеринга. Использо­вание этих особенностей очевидно в интерфейсе пользователя Windows XP, и их присутствие в основном графическом уровне очень упрощает выполнение векторных графических преобразо­ваний. Динамическая библиотека GDI+ может вместе с прило­жением использоваться под более ранними версиями Windows. Библиотека классов Microsoft.NET обеспечивает управляемый интерфейс для GDI+.

API для трехмерной графики

Господствующими направлениями в обработке трехмерной графики в последние годы являются два 3D-API — OpenGL и Direct3D. Прежде чем давать их описания вкратце охарактеризу­ем процедуры, входящие в понятие представления изображения или рендеринга.

OpenGL (Open Graphics Library — открытая графическая биб­лиотека) — межъязыковая и межплатформенная спецификация API для трех- и двумерных приложений компьютерной графики. Включает более чем 250 функций, которые предназначены для формирования трехмерных объектов и сцен из простых прими­тивов. OpenGL был разработан Silicon Graphics Inc. (SGI) в 1992 г. и широко распространен в индустрии разработчиков ви­деоигр, где конкурирует с Direct3D на платформах Microsoft Windows. OpenGL широко используется в САПР, визуализации данных, системах моделирования и видеоиграх.

В своей основе OpenGL — это спецификация, т. е. некото­рый документ, который определяет набор функций и содержит точное описание действий, которые они должны выполнять. На основе этой спецификации производители аппаратных средств ЭВМ создают конкретные программные реализации — библиотеки соответствующие функциям, объявленным в OpenGL – спецификации, используя видеоакселераторы там, где возможно. Оборудование подвергается сертификационным тестам, чтобы квалифицировать его соответствие OpenGL.

Применение OpenGL преследует следующие основные цели:

• предоставляя программисту однородный программный ин­терфейс приложения, скрывать подробности взаимодейст­вия с различными 3D-акселераторами;

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

Основная функция OpenGL заключается в считывании гра­фических примитивов (точек, линий и многоугольников) и преобразовании их в пиксели. Это происходит в графическом конвейере, известном как «машина OpenGL» (OpenGL state machine). Большинство команд OpenGL или направляет прими­тивы на конвейер, или задает, как конвейер должен их обраба­тывать.

До появления OpenGL 2.0 каждая стадия конвейера выпол­няла установленную функцию и конфигурировалась только в уз­ких пределах, но в OpenGL 2.0 несколько стадий могут полно­стью программироваться с использованием языка GLSL.

OpenGL — процедурный программный интерфейс приложе­ния низкого уровня, который требует от программиста точного описания шагов рендеринга сцен, а также хорошего знания гра­фического конвейера.

Краткое описание процесса в графическом конвейере (рис. 3.27):

• построение (evaluation) коэффициентов полиномиальных Функций (наподобие сплайновых кривых NURBS), кото­рые аппроксимируют пространственные поверхности объектов;

• обработка вершин многогранников (vertex operations), их преобразование или подсветка в зависимости от материала, Удаление невидимых частей объектов;

• растеризация (rasterisation) или преобразование предыду­щей информации в пиксели, окраска многоугольников осуществляется на основе алгоритмов интерполяции;

• операции над фрагментами (пиксели или их группы — per-fragment operations) типа обновления ранее поступив­шей и сохраненной информации (цветовая глубина, отте­нок и пр.);

• передача пикселей в буфер кадра/сцены (frame buffer).

DirectX. Впервые предложенный в 1995 г., DirectX представ­лял собой объединенный набор инструментов программирова­ния, предназначенных для того, чтобы помочь разработчикам создавать широкий спектр мультимедийных приложений для платформы Windows. Охватывая почти все аспекты мультиме­дийных технологий, выпуск DirectX 8.0 включает следующие компоненты:

• DirectX Graphics, который в свою очередь состоит из двух API:

— DirectDraw — для обработки двумерных растровых изоб­ражений;

— Direct3D (D3D) — обработчик 3D-графики;

• DirectInput, обрабатывает данные, поступающие от кла­виатуры, мыши, джойстиков или других игровых контрол­леров;

• DirectPlay — для поддержки сетевых игр;

• DirectSound — проигрывание и запись звука;

• DirectSound3D (DS3D) — для воспроизведения 3D-звучания;

• DirectMusic — проигрывание звукозаписей, подготовлен­ных в DirectMusic Producer;

• DirectSetup — установка и настройка компонент DirectX;

• DirectX Media, включает DirectAnimation, DirectShow, DirectX Video Acceleration, Direct3D Retained Mode и DirectX Transform для анимации, воспроизведения мульти­медиа, 3D -интерактивных приложений;

• DirectX Media Objects — поддержка кодирования/декоди­рования в реальном масштабе времени и создание спецэф­фектов.

Direct 3 D. Direct3D включает две компоненты API — Immediate Mode (немедленная обработка) и Retained Mode (от­ложенная обработка). Первая обеспечивает использование всех 3D-функций видеокарт (подсветка, текстурирование, трансфор­мация объектов и пр.), в то время как вторая — более сложные графические технологии, такие как иерархия сцен или анима­ция. Функции Immediate Mode предпочитают использовать раз­работчики видеоигр, поскольку здесь они могут осуществлять программирование на низком уровне, более свободно и эффек­тивно используя возможности графического оборудования. Не­смотря на Intermediate Mode считается, что Direct3D является менее гибким, чем OpenGL.

Компоненты 6-й версии Direct3D поддерживают возможно­сти более новых графических карт выполнять множественное текстурирование (покрытия «каркаса» изображения текстурами) за один проход. Здесь также используются более новые методы для того, чтобы улучшить реализм 3D-сцен, типа анизотропной фильтрации (anistropic filtering), которая добавляет элемент глу­бины к трилинейной фильтрации (trilinear filtering) и отображе­ние неровностей (bump mapping), которое создает иллюзию ре­альности структуры и освещенности плоских поверхностей.

Следующая версия — DirectX V7.0 (1999 г.), кроме оптими­зации кода, которая позволила на 20 % увеличить быстродейст­вие, включала ряд новых особенностей. Наиболее важная из них — сопровождение операций трансформации и подсветки (transformation and lighting — T&L), поскольку они поддержива­ются большинством 3D-акселераторов текущего поколения, и особенно в графических картах чипсетов GeForce 256 (nVidia) и bavage 2000 (S3).

Поскольку операции T&L являлись одной из самых трудоемких для центральных процессоров задач в современных игровых приложениях, перенос этой нагрузки на выделенный 3D-акселератор позволяет освободить ЦП для более существенных задач (например, внесение в игры элементов искусственного интеллекта или выработка специальных эффектов).

Самым важным аспектом DirectX 9.0 (январь 2003 г.) было введение HLSL (High Level Shader Language, высокоуровневый язык раскрашивания изображений). Ранее разработчики игр должны были программировать алгоритмы раскраски, используя ассемблер низкого уровня. HDSL вводит дружественную среду программирования, которая облегчает каждый шаг разработки, — от создания ярких образов в мультипликации до программирова­ния эффектов. Базирующийся на языке программирования С, HLSL совместим со всеми графическими средствами DirectX.

Структура графического конвейера Direct3D (рис. 3.28):

• входная сборка (input assembler) поставляет данные на кон­вейер;

• раскраска вершин многогранников (vertex shader) выполня­ет операции над вершинами, такими, как трансформация, покрытие текстурой, подсветка;

• раскраска геометрических примитивов (geometry shader) — операции над примитивами (треугольники, вершины, ли­нии), иногда — над связанными с ними примитивами. На этой стадии каждый примитив передается дальше или уничтожается, или на его основе создается один или не­сколько новых примитивов;

• выходной поток (stream output) — запись в память резуль­татов предыдущих стадий. На основе этих данных могут быть организованы итерационные циклы обработки дан­ных на конвейере;

• растеризация (rasterizer) — трансформация примитивов в пиксели, удаление невидимых;

• раскраска пикселей (pixel shader) и другие операции над ними;

• окончательная сборка (output merger), объединение раз­личных типов выходных данных и построение кадра-ре­зультата.

Контрольные вопросы

1. Каковы характеристики аналогово-цифрового и цифро-аналогового

преобразований аудиоданных?

2. Перечислите методы синтеза звука.

3. Какие характеристики имеют аудиоадаптеры?

4. Что такое ЧМ и WaveTable?

5. Перечислите возможности карты SoundBlaster.

6. Что такое Live!Drive?

7. Охарактеризуйте MIDI-интерфейс.

8. Перечислите основные характеристики форматов аудиосигнала.

9. Какие основные функции реализует программное обеспечение обра­ботки

аудиосигналов?

10. Охарактеризуйте методы оптической интерполяции.

11. Перечислите основные характеристики цифровых видеокамер (ЦВК).

12. Что такое схемы цветообразования?

13. Охарактеризуйте форматы графических файлов.

14. Что такое видеозахват?

15. Что такое цветоразностные компоненты?

16. Перечислите форматы записи цифрового видео.

17. В чем заключается сущность M-JPEG сжатия видеоданных?

18. Перечислите основные особенности алгоритмов MPEG-1—4.

19. Что такое GOP?

20. Что такое профили MPEG?

21. В чем сущность стандарта MPEG-7?

22. Перечислите основные фазы работы с 3-мерной графикой.

23. Что такое рендеринг?

24. Охарактеризуйте API OpenGL.

25. Что такое DirectX и Direct3D?

 

 

Глава 4



Поделиться:


Последнее изменение этой страницы: 2021-04-05; просмотров: 216; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.2.184 (0.026 с.)