Сравнение возможностей графических систем OpenGL и DirectX

Автор работы: Пользователь скрыл имя, 07 Ноября 2012 в 01:57, реферат

Описание работы

Сейчас трёхмерные изображения можно увидеть везде, начиная от компьютерных игр и заканчивая системами моделирования в реальном времени. Раньше, когда трёхмерная графика существовала только на суперкомпьютерах, не существовало единого стандарта в области графики. Все программы писались с «нуля» или с использованием накопленного опыта, но в каждой программе реализовывались свои методы для отображения графической информации. С приходом мощных процессоров и графических ускорителей трёхмерная графика стала реальностью для персональных компьютеров. Но в тоже время производители программного обеспечения столкнулись с серьёзной проблемой – это отсутствие каких-либо стандартов, которые позволяли писать программы, независимые от оборудования и операционной системы.

Содержание работы

Введение
1. OpenGL. Общая характеристика
1.1 Основные возможности OpenGL
1.2 Дополнительные библиотеки OpenGL
1.3 Эволюция OpenGL
2. DirectX. Общая характеристика
2.1 Основные компоненты DirectX
2.2 Возможности DirectX
2.3 Эволюция DirectX
3. Сравнительный анализ OpenGL и DirectX
Заключение
Список использованной литературы

Файлы: 1 файл

Министерство образования Республики Беларусь 2.docx

— 67.19 Кб (Скачать файл)

В целях улучшения производительности не желательно использовать очень сложные  шейдеры на аппаратных средствах, не способных обрабатывать их достаточно быстро. Идеальное решение в данном случае состоит в том, чтобы использовать нечто, что будет гораздо быстрее  обрабатывать на аппаратных средствах  бюджетных классов, иначе это  приведет к тому, что весь процесс  слишком усложнится и появятся большие накладные расходы, связанные с переключением шейдеров. Понятно, что это может повлечь за собой большие объемы дополнительных работ - uber-шейдер является самым простым вариантов для разработчика когда дело доходит до написания кода, но это точно не является идеальным решением.

Microsoft полагает, что ответом на эту проблему являются подпрограммы, позволяющие разработчикам объединять шейдеры – это означает, что разработчики могут создать более простой и более специализированный шейдер для различных целевых классов аппаратных средств, при этом уменьшая частоту использования регистра по сравнению с вариантом, когда используется один шейдер, который управляет всеми остальными. Хотелось бы надеяться, что заставит быть разработчиков более амбициозными при написании шейдеров, однако это вряд ли окажет какое-либо прямое влияние на геймеров.

Прошло  много времени с того момента, как Microsoft обновила алгоритмы сжатия текстур DirectX и, послушав отзывы и рекомендации разработчиков, компания почувствовала, что уже давно требуются новые усовершенствования. Из всех жалоб, поступивших от сообщества разработчиков, Microsoft обратила свое внимание на слабую поддержку текстур HDR-формата, а также на тот факт, что после мультитекстурирования результирующее изображение часто оказывалось чересчур «блочным», независимо от разрешения оригинальной текстуры.

Чтобы удовлетворить эти потребности, в D3D11 будут введены два новых  формата текстур – BC6 (или BC6H) и BC7. Прежний формат текстур высокого разрешения, не мог избежать потерь; вместо него будет предложено сжатие 6:1 с 16 bpc (bit per channel) – это позволит осуществлять эффективное, но при этом относительно высококачественное текстурирование в сценах с широким использование HDR-освещения, однако текстуры при этом будут немного отличаться от оригинала.

BC7, в свою очередь, является LDR (low dynamic range) форматом текстур и предлагает сжатие для RGB в пропорции 3:1. Кроме того, BC7 также можно использовать вместе с альфа-каналом, но с небольшим падением производительности – степень сжатия при этом будет уже 4:1, однако качество текстур все еще очень будет высоким.

Microsoft также добавляет, что декомпрессия текстур в DirectX 11 должна будет проводиться в полном соответствии со спецификациями этого API. Причиной этого является стремление компании еще увеличить качество декомпрессии текстур, потому как до момента выхода DirectX 11 у производителей аппаратных средств будет некоторый запас по времени для настройки аппаратных способов декомпрессии текстур на устройствах класса DirectX 10 и ниже.

 

2.3 Эволюция DirectX

 

Изначально  нацеленный на разработку видеоигр, DirectX стал популярен и в других областях разработки программного обеспечения. К примеру, DirectX, наряду с OpenGL, получил очень широкое распространение в инженерном/математическом ПО.

В 1994 году Microsoft была практически готова выпустить следующую версию Windows – Windows 95. Главным фактором, определяющим, насколько популярна будет новая ОС, являлся набор программ, которые можно будет запускать под её управлением. В Microsoft пришли к выводу, что, пока разработчики видят DOS более подходящей для написания игровых приложений, коммерческий успех новой ОС весьма сомнителен.

DOS позволяла разработчику получить  прямой доступ к видеокарте, клавиатуре/мыши/джойстику  и прочим частям системы, в  то время как Windows 95, с её защищённой моделью памяти, предоставляла более стандартизованный, но в то же время весьма ограниченный и накладный доступ к устройствам. Microsoft нуждалась в новом способе дать разработчику всё, что ему необходимо. Айслер (Eisler), Сэйнт Джон (St. John), и Энгстром (Engstrom) решили эту проблему, назвав само решение DirectX.

Первый  релиз DirectX был выпущен в сентябре 1995 года, под названием «Windows Game SDK».

Ещё до появления DirectX, Microsoft включила OpenGL в ОС Windows NT. Direct3D позиционировался как замена OpenGL в игровой сфере. Отсюда берёт своё начало «священная война» между сторонниками кросс-платформенной OpenGL и доступной лишь в Windows (в том числе Windows NT) Direct3D. Так или иначе, остальные части DirectX очень часто комбинируются с OpenGL в компьютерных играх.

В 2002 году Microsoft выпустила DirectX 9 с улучшенной и расширенной поддержкой шейдеров. С 2002 года DirectX неоднократно обновлялся. В августе 2004 года в DirectX была добавлена поддержка шейдеров версии 3.0 (DirectX 9.0c).

В апреле 2005 интерфейс DirectShow был перемещён в Microsoft Platform SDK.

Ключевые  особенности версий:

DirectX 6.0 — мультитекстурирование;

DirectX 7.0 — аппаратная поддержка преобразований, обрезания и освещения;

DirectX 8.0 — шейдерная модель 1.1;

DirectX 8.1 — пиксельные шейдеры 1.4 и вершинные шейдеры 1.1;

DirectX 9.0 — шейдерная модель 2.0;

DirectX 9.0b — пиксельные шейдеры 2.0b и вершинные шейдеры 2.0;

DirectX 9.0c — шейдерная модель 3.0;

DirectX 9.0L — версия DirectX 9.0 для Windows Vista;

DirectX 10 — шейдерная модель 4.0;

DirectX 10.1 — шейдерная модель 4.1;

DirectX 11 — шейдерная модель 5.0 (только Windows Vista, Windows 7).

 

 

3. Сравнительный анализ OpenGL и DirectX

 

Хотя  библиотека OpenGL и считается одной из лучших библиотек, как для профессионального применения, так и для игр, у неё существуют и конкуренты.

Одним из главных конкурентов считается Direct3D из пакета DirectX, разработанный фирмой Microsoft. Direct3D создавался исключительно для игровых приложений. Если сравнивать эти две библиотеки, то нельзя сказать, что одна из них лучше, а другая хуже, у каждой библиотеки имеются свои особенности. Например, если сравнивать их в плане переносимости программ с одной платформы на другую, то Direct3D будет работать только на Intel платформах под управлением операционной системы Windows, в то время программы, написанные с помощью OpenGL можно успешно перенести на такие платформы как Unix, Linux, SunOS, IRIX, Windows, MacOS и многие другие. А вот в плане объектно-ориентированного подхода OpenGL уступает Direct3D. OpenGL работает по принципу конечного автомата, переходя из одного состояния в другое, совершая при этом какие-то преобразования. Ещё одним преимуществом Direct3D является поддержка дешёвого оборудования, OpenGL же поддерживается не на всех графических картах, но для профессиональных ускорителей OpenGL является стандартом де-факто. И ещё, OpenGL легче чем Direct3D для изучения основ графики, OpenGL можно применять, например, для начального изучения трёхмерной графики.

Основной  особенностью OpenGL можно считать простоту. Ядро OpenGL контролирует процесс обработки примитивов. Для передачи данных используется процедурная модель. В каждый момент времени состояние OpenGL определяется через набор переменных, задающих параметры обработки. Каждый новый переданный треугольник проходит обработку в соответствии с текущим состоянием. Такой механизм весьма эффективен, а код обычно короток и прост. Хотя ядро OpenGL процедурное, в использовании его совместно с объектно-ориентированными технологиями сложностей обычно не возникает: все зависит от выбора программиста.

Структура DirectX значительно отличается от OpenGL. DirectX основан на модели COM (Component Object Model). Это означает, что в отличие от простого вызова функций эта модель предполагает выполнение некоторых дополнительных действий, связанных с компонентной архитектурой DirectX. Такая архитектура имеет как достоинства, так и недостатки. В частности, код, в котором используются вызовы DirectX, обычно не является идеалом легко читаемого и понимаемого. Поэтому даже рисование простого треугольника требует огромного объема кода. Разработчики Microsoft, конечно, понимают это, поэтому для упрощения программирования ими создана отдельная библиотека DirectX Common Files, которая скрывает часто используемый код.

Хотя  принципиально архитектура DirectX сильно отличается от OpenGL, в их развитии все более заметны тенденции к сближению. Такая ситуация возникает прежде всего потому, что обе библиотеки предназначены для эффективной работы с аппаратурой, и чем ближе их структура будет к "железу", тем меньше времени будет уходить на преобразование команд пользователя в команды аппаратуры.

По  поддержке аппаратных функций OpenGL и DirectX , в общем, эквиваленты. OpenGL новые функции доступны через механизм расширений, а в DirectX они появляются в новых версиях.

Серьезным достоинством OpenGL является, прежде всего, то, что это «открытый стандарт». Любая компания, имеющая аппаратную платформу, может купить лицензию у SGI и затем сделать собственную реализацию OpenGL. Изменения в OpenGL предлагаются, обсуждаются и утверждаются представителями различных компаний. Что касается DirectX, то здесь ситуация прямо противоположная. Только Microsoft может вносить какие-либо изменения в библиотеку. Иначе говоря, именно Microsoft в конечном итоге определяет все пути развития библиотеки, и если путь был выбран неверно, это может быть исправлено только в новой версии.

 

 

Заключение

 

Достоинства библиотек становятся наиболее очевидны при их использовании в разных, но пересекающихся, прикладных областях. DirectX идеален для профессиональной разработки игр и мультимедийных приложений на платформе Windows. OpenGL используется на высокопроизводительных рабочих станциях, в научной сфере, в образовании, а также в любых проектах, где требуется переносимость приложений на различные программные или аппаратные платформы.

В ходе работы над рефератом был  обработан и проанализирован  большой объем специальной информации, что позволило приобрести ценные знания в области графических  библиотек и сред разработки графических  интерфейсов.

 

 

Список использованной литературы

 

  1. Адамс Д. DirectX: продвинутая анимация. Комплект. — «КУДИЦ-ПРЕСС», 2004. — С. 480. — ISBN 5-9579-0025-7.
  2. 3DNews [Электронный ресурс]. – Электронные данные. – Режим доступа: http://www.3dnews.ru/software/opengl/
  3. Realcoding.NET [Электронный ресурс]. – Электронные данные. – Режим доступа: http://www.realcoding.net/articles/novye-vozmozhnosti-directx-11-dinamicheskoe-podklyuchenie-sheiderov-i-szhatie-tekstur.html
  4. THG [Электронный ресурс]. – Электронные данные. – Режим доступа: http://www.thg.ru/graphic/open_gl_3_directx_11/open_gl_3_directx_11-01.html
  5. Компьютерная графика и мультимедиа. Сетевой журнал [Электронный ресурс]. – Электронные данные. – Режим доступа: http://cgm.computergraphics.ru/content/view/55

Размещено на Allbest.ru


Информация о работе Сравнение возможностей графических систем OpenGL и DirectX