Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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 — поддержка кодирования/декоди­рования в реальном масштабе времени и создание спецэф­фектов.

Direct3D. 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?

 

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.008 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал