Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Программные средства трехмерной графикиСодержание книги
Поиск на нашем сайте
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; просмотров: 239; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.146.178.81 (0.008 с.) |