Сравниваем DirectX 9 и Direct 11 | Важные отличия

DX11 и DX12: а есть ли между ними разница? / карты / iXBT Live

Сравниваем DirectX 9 и Direct 11 | Важные отличия

Сменяются видеокарты, игры, процессоры, а смена DX11 на DX12 тянется еще с 2015 года, поэтому многие и забыли, чем эти версии отличаются друг от друга, и что же принесет новая API.

В большей части на этом лежит вина и самого Microsoft, так как они сделали DX12 достоянием исключительно Win10, заявив что на более старых системах DX12 невозможно реализовать, но не так давно появилась информация, что поддержка DX12 все же появится на win7, и первой игрой будет World of Warcraft. В результате долгое время компьютеров с поддержкой DX12 было крайне мало, чтобы разработчикам игр вообще стоило обращать на этот сегмент свое внимание. Пожалуй, только сама Microsoft и ее дочерние игровые компании перешли на полноценный выпуск игр на DX12, но среди них не было значимых шедевров, и, пожалуй, самая узнаваемая серия — это Forza Horizon.

Однако, на начало 2019 года ситуация стала меняться, и, прежде всего, мы уже видим в статистике STEAM, что большинство компьютеров (64.53%) уже имеют как видеокарту так и операционную систему, совместимую с DX12, и стоит напомнить, что последнее поколение приставок Microsoft и Sony тоже поддерживают DX12, что в итоге дает нам абсолютное большинство игровых устройств DX12 ready.

В итоге мы видим, что на конец 18 и начало 19 года все больше и больше игр отказываются от DX11 как основного API в пользу как DX12, так и Vulkan. Вот их список:

  • Lara Croft Shadow of the Tomb Raider
  • Resident evil 2 (remake)
  • Crackdown 3
  • Metro Exodus
  • The Division2
  • Devil may cry 5

Готовятся к выходу и, скорее всего, будут иметь поддержку Vulkan или DX12

  • DOOM Eternal
  • Wolfenstein Youngblood
  • Serious Sam 4
  • Star wars fallen order
  • Rage 2 

Поскольку мы выяснили, что для полномасштабного ввода DX12 есть как готовность со стороны пользователей, так и достаточное кол-во крупных проектов, то стоит освежить знания о этом API.

Вероятнее всего, вы считаете, что самым главным отличием DX12 от своего предшественника является возможность трассировки лучей, и на этом все отличия заканчиваются, но это вовсе не так.

Давайте взглянем на отличия этих двух версий, чтобы нам лучше понимать, чего эти версии могут и не могут, и что реально принесет DX12.

Помимо упомянутой трассировки лучей DX12 включал в себя такую технологию как Multi Gpu — это возможность объединения нескольких видеокарт даже различных производителей для обработки изображения. Звучит здорово, но, на мой взгляд, технология имеет мало шансов на широкое применение, и вот почему.

Для разработчика игр придется сначала заставить работать просто неимоверное кол-во различных вариаций видеокарт, потом еще это все протестировать, а это очень много времени и очень много затрат, а выгоды от введения сомнительны.

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

Вообще стоит вспомнить SLI и CrossFire —  много ли игр поддерживают эти технологии? Вот мы и добрались до наиболее значимых отличий DX12 от предшественника — работа с потоками CPU.

Таким образом выглядит пример работы игры с DX11: один поток отвечает за обработку видео, на остальных работают другие части движка, например звуковой движок, сетевая часть, расчет NPC и так далее, главное, что за самую емкую и сложную часть отвечает только 1 ядро процессора. Теоретически DX11 может работать максимум с двумя потоками, но, к сожалению, как показывает практика, это остается только теорией. DX12 уже способен работать с восемью потоками, и выглядит это так:

DX12 распределяет по потокам/ядрам самую объемную задачу по подготовке данных и последующей обработке их на GPU, что влияет положительно на производительность.

Производительность, разумеется, не вырастает в 8 раз, так как этот процесс не идеально масштабируемый, и есть и другие узкие места.

Забавно отметить, что результаты работы в случае всего одного потока или восьми отправляются на GPU о обрабатываются тысячами ядер CUDA или CU в зависимости от вендора GPU.

Что же происходит с данными попавшими в GPU?

Вверху видна последовательность обработки данных DX11, которая происходит в строго установленном порядке, и без выполнения предыдущих задач следующие не могут быть реализованы, тогда как DX12 имеет возможность разделения и исполнения этих задач на разных ядрах нашего GPU, что обеспечивает большую загрузку самого GPU и приводит к уменьшению задержек и росту FPS. Важно отметить, что скорость исполнения самих элементов, из которых состоит вся задача, не увеличивается. Весь выигрыш в производительности достигается только за счет оптимизации очереди — это и называется асинхронные вычисления.

Давайте теперь взглянем на то, что же конкретно подготавливает CPU для последующей обработки на GPU, если конечную картинку мы видим в таком виде:

То процессор передает каркас изображения в виде сетки полигонов для последующей закраски — аналогия с деткой книжкой-раскраской более чем уместна.

Каждый из полигонов обрабатываются на CPU и называется вызовом отрисовки или draw call.

Соответственно, чем больше полигонов в кадре мы видим, тем больше нагрузка на CPU, такие ситуации наиболее характерны для игр с открытым миром и появления большого количества объектов в кадре, особенно если это очень детализированные объекты как NPC.

В других случаях — когда мы смотрим в небо или видим незначительное кол-во полигонов в каком-нибудь ограниченном пространстве, например, коридоре, где вызовов отрисовки не так много, преимущества DX12 тают. Давайте перейдем к выводам из теоретической части знакомства с DX12.

  1. В визуальном плане DX12 имеет очень скудные преимущества перед DX11 — лучи это самое яркое отличие.

  2. Программирование под DX12 сложнее, и все преимущества нового API раскрываются полностью, только когда движок изначально разрабатывается, а не адаптируется под него.

  3. Для несложных сцен, где в кадре мало объектов/предметов и полигонов, DX12 может показывать меньшую производительность по сравнению с DX11, так как все вызовы отрисовки прекрасно успевают обрабатываться на 1 ядре процессора, а в случае с DX12 результаты работы восьми потоков надо еще синхронизировать. Это может быть верно для целых игр, а не просто сцен, если они в своей основе имеют несложную графику.

  4. DX12 не снижает нагрузку на процессор, а, наоборот, увеличивает, только при этом нагрузка распределяется до 8ми ядер/потоков процессора а не ложится на 1 ядро.

  5. Выигрыш от перехода на DX12 будет у процессоров с небольшой производительностью на ядро, но большим их количеством, например, как серия FX от AMD.

Синтетический тест 3D mark Api Overhead Test https://3dnews.ru/911658

Наблюдаем в кадре то самое большое количество объектов, и результат — отличие на  порядок,- это действительно огромная разница, даже если сделать скидку на то, что это синтетический тест.

Игровые тесты

Тестовая конфигурация

  • FX 6300 @4500
  • DDR3 2133
  • RX 580 8GB

Lara Croft Shadow of the Tomb Raider

Для рассмотрения возьмем последнюю сцену из 3х тестовых отрезков — она наиболее характерна большим количеством вызовов отрисовок.

Обратите внимание на загрузку процессора: слева DX11 74%, справа DX12 100%.

Первые 3 значения относятся к последней сцене теста, четвертое же значение — это результат по всем трем сценам.

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

Resident Evil 2 remake

В этом тесте мы видим куда менее тривиальные результаты: падение максимального и среднего кадра, но и подъем минимальных значений аж на целых 33%.

То есть, в моментах, где производительности 1 потока вполне хватает, DX11 даже быстрее, но как только сцена усложняется и производительности 1 потока недостаточно, DX12 раскрывается, что переносит весь игровой процесс до 60+ кадров, а DX11 опускается до условно неиграбельных 45.

Боюсь именно с такими результатами и связана такая нелюбовь тестеров к DX12, так как в нем может быть меньше максимальных кадров, и даже, что может показаться совсем неприемлемым, и средние кадры, однако, как ни парадоксально, DX12 при этом более комфортен для игры.

Давайте перейдем к связкам с другим видеокартами и процессорами и понаблюдаем за результатами. Для этого выберем 4 игры:

  • Lara Croft Shadow of the Tomb Raider
  • Resident Evil 2 remake
  • Division2
  • Metro Exodus

Все эти игры работают как в режиме DX11, так и DX12. Давайте сравним, каковы будут изменения от смены API. Во всех тестах в качестве CPU применялся 9900K в разгоне до 5.0. Другими словами, мы увидим ситуацию, когда процессор не ограничивал нашу производительность.

Данные в таблице — это изменения в % между API. Интересно, что видеокарты семейства Pascal по-разному реагируют на DX12, несмотря на одинаковую архитектуру в их основе, прироста на младших моделях нет, связано ли это с работой драйвера или аппаратной части, находится за рамками этого блога.

Нужно констатировать только одно: на видеокартах, формально имеющих поддержку DX12_1, прироста от перехода на новый API может не быть. С другой стороны, видеокарта RX 580, формально имеющая поддержку только DX12_0, дает прирост в 9% как топовая GTX 2080, прирост у видеокарт Vega доходит до 17%, что является просто потрясающим результатом.

В любом случае мы замечаем прирост на последних сериях видеокарт от 5% до почти 20% производительности, и это очень значительное изменение.

Что можно сказать — даже в связке с мощным процессором на современных видеокартах переход на DX12 оправдан и увеличивает производительность, если провести подобные тесты с менее производительным процессором, то отличия будут еще более существенны.

Справедливо будет заметить, что у компании Nvidia традиционно была хорошая производительность под DX11, и можно было бы предположить, что DX12 просто мог не давать таких преимуществ как у конкурентов. Давайте немного отвлечемся от темы сравнения API и взглянем более пристально на сами видеокарты.  

Что ж, в DX11 видим тотальное доминирование продуктов Nvidia, и только Vega 56 немного опережает своего визави в виде GTX1070.

Однако при переходе на DX12 ситуация кардинально меняется, и Vega 56 опережает GTX 1070 уже на 13% и отстает на 7,6% от GTX1080, Vega 64 же опережает GTX 1080 5.4% и не дотягивает до RTX 2070 всего 2%! Да, похоже, AMD не зря в своих презентациях много внимание уделяла DX12 — действительно, их продукция намного лучше чувствует себя под новым API.

В качестве вывода можно сказать, что для владельцев старых процессоров, которые приобрели одни из последних серий видеокарт, переход на DX12 в любимой игре даст ощутимую прибавку производительности вплоть до 50%, при использовании DX12 на топовых видеокартах и процессорах выигрыш DX12 может составлять 10-20%, что тоже крайне не мало, поэтому все больше и больше разработчиков обращают внимание на новый API, и если в 19 году как минимум 50% из крупных, так называемых AAA, игр вышло с поддержкой DX12, то с выходом консолей нового поколения как от Microsoft, так и от Sony игровая индустрия окончательно перейдет на новый стандарт, поэтому при покупке видеокарты уже сейчас стоит обращать внимание преимущественно на тесты именно в этом API. Поэтому, скажем, новые серии Turing в виде 1660 1660ti 1650 1650ti могут быть намного привлекательнее, чем это могло бы казаться на первый взгляд т.к. по сравнению с 1050ti,1060, 1070 они действительно быстрее работают под новым API.

Результаты последних тестов взяты со страниц сайта gamegpu.com

Больше моих тестов и обзоров вы найдете на моем канале.

P.S. Говоря о различиях Vulkan и DX12, надо упомянуть, что в состав последнего входит DirectX Audio, который стандартизирует работу с аудио, что очень сильно упрощает разработку, в Vulkan подобного нет.

Так же эти API отличаются в топологии своей работы, и программирование под ними несколько разное, но основная цель DX12 и Vulkan — это отвязать работу вызовов отрисовки от одного лишь ядра, и с этой задачей оба API справляются.

Источник: https://www.ixbt.com/live/3dv/dx11-i-dx12-a-est-li-mezhdu-nimi-raznica_2.html

Сравнение OpenGL и Direct3D

Сравниваем DirectX 9 и Direct 11 | Важные отличия

Очень часто встречаются различные заблуждения по поводу этих двух API. Я попытался изложить в этой статье основные факты, которые следует знать как разработчикам, так и конечным пользователям. Так как тема очень холиварная, я старался придерживаться максимально нейтрального тона.

Взгляд с высоты птичьего полёта

Оба API предоставляют доступ к функциям аппаратного ускорения 3D-графики.

Direct3D — проприетарная разработка Microsoft, созданная специально для Windows. В настоящее время используется так же и на Microsoft Xbox. На других платформах недоступен (если не брать в учёт эмуляцию API, предоставляемую Wine, а также виртуализацию).

OpenGL — открытый стандарт, разрабатываемый некоммерческой организацией Khronos Group при участии сообщества. Все крупные производители GPU (nVidia, AMD, Intel), так или иначе, влияли на OpenGL. В отличие от Direct3D, доступен на очень большом количестве платформ. В частности, OpenGL является основным API для взаимодействия с GPU в Linux и Mac OS.

«Внешние» технические различия API

Direct3D основан на технологии COM. COM — это, по сути, стандарт бинарного представления компонентов. Как известно, классы на чистом C++ не могут быть использованы из других языков программирования, так как они не имеют стандартизованного бинарного представления.

В частности, каждый компилятор использует свой собственный метод декорирования имён. COM же позволяет работать с объектно-ориентированной концепцией из любого языка, его поддерживающего. COM — это тоже Windows-specific технология (использует такие специфичные для Windows вещи, как реестр).

В приложении на Direct3D используются указатели на интерфейсы объектов. Работа с объектом осуществляется путём вызова методов его интерфейса.

Например, интерфейс так называемого device-а (device в Direct3D — это контекст выполнения для конкретного окна), имеет название (примеры для Direct3D 9) IDirect3DDevice9, для объекта текстуры — IDirect3DTexture9, и т.д.

Создание объектов происходит как вызовы методов интерфейса IDirect3DDevice9, например, для текстуры это будет IDirect3DDevice9::CreateTexture.

В Direct3D 10 произошло значительное количество изменений. Direct3D 10 не является обратно совместимым с Direct3D 9. Т.е. чтобы перенести программу на новый API потребуется переписать весь код, относящийся к рендерингу. Подробнее о Direct3D 10 ниже.

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

В OpenGL используется так называемая машина состояний (конечный автомат). Результат вызовов функций OpenGL зависит от внутреннего состояния, и может изменять его. В OpenGL, чтобы получить доступ к конкретному объекту (например, текстуре), нужно сначала выбрать его в качестве текущего функцией glBindTexture, а затем уже можно влиять на объект, например, задание содержимого текстуры осуществляется вызовом glTexImage2D. Аналогом концепции device-а в Direct3D здесь является контекст. Контекст OpenGL привязан к конкретному окну, так же, как и device в Direct3D. Общим для двух API является то, что обе не предоставляют чего либо за пределами работы с графикой. А именно, нет функций ни для создания окна, ни для работы с вводом с клавиатуры/мыши, ни для работы со звуком (здесь я не затрагиваю другие части DirectX, такие как DirectInput и DirectSound). Т.е. они не являются библиотеками высокого уровня. В самой упрощённой форме можно сказать так: OpenGL и Direct3D позволяют рисовать треугольники. И всё. Суть в том, что треугольники можно рисовать очень по-разному (текстуры, освещение, преобразования, и т.д.).

Самое важное различие

Имя ему — расширения (extensions). Direct3D по сути фиксирован в пределах одной мажорной версии. Какие-либо изменения/дополнения происходят только при выпуске следующей версии. В OpenGL реально доступное API определяется производителем GPU.

Реализация OpenGL позволяет определять расширения к основной спецификации. Приложение может получить список поддерживаемых расширений во время выполнения, и проверить на доступность те, которые оно желает использовать. На самом деле практически весь функционал OpenGL — это расширения.

Развитие OpenGL идёт так: появляется новая фишка, производитель реализовывает её в своём драйвере и документирует доступное расширение. Приложения могут использовать новые функции прямо сейчас, не дожидаясь включения в официальную спецификацию.

Если это расширение специфично для конкретного производителя, то в названии оно несёт его имя (например, вот так: GL_NV_point_sprite, где NV — значит nVidia). Если расширение реализовано многими вендорами, то в названии используется EXT (например, GL_EXT_draw_range_elements).

Со временем, если расширение широко используется, оно стандартизируется в ARB, и после этого содержит в имени ARB (например, GL_ARB_vertex_buffer_object). Такое расширение имеет официальный статус.

Самые важные расширения со временем становятся частью основной спецификации. Каждая новая версия OpenGL — это по сути старая версия+несколько новых интегрированных расширений. При этом новые функции продолжают быть доступными как расширения. Т.е. на самом деле с точки зрения программы может быть вообще всё равно, какая версия OpenGL. Главное — какие доступны расширения. Версия OpenGL — это просто способ указать, какой набор расширений гарантированно поддерживается.

Что нового в Direct3D 10/11 и OpenGL 3.x

Microsoft сделали радикальную переработку API в Direct3D 10. Сейчас оно имеет более унифицированный и современный вид. Были выброшены некоторые устаревшие вещи, такие как fixed function rendering (без использования шейдеров). Ещё был выполнен переход к новой модели работы драйвера.

В частности, реализация Direct3D теперь может иметь не только kernel-space часть, а и user-space. Это позволяет экономить время на переключения user-space/kernel-space. Однако, из-за новой модели драйвера, Direct3D 10 и выше недоступен на Windows XP. Учитывая всё ещё большую популярность Windows XP, это довольно грустно.

Реализация OpenGL изначально была разделена на user-space и kernel-space части, так что там такой проблемы и не было. Ещё различие в том, что до сих пор не вносилось изменений в OpenGL API, которые не были бы обратно совместимы. Каждое нововведение — это расширение.

Функционал, появившийся в Direct3D 10, например, геометрические шейдеры, доступен в OpenGL на любой платформе через расширение, или, начиная с OpenGL 3.2, как часть основной спецификации. Стоит особо подчеркнуть, это важно, функционал Direct3D 10/11 доступен в OpenGL на любой платформе, в том числе и Windows XP.

Таким образом у многих сложилось впечатление, что Direct3D 10 не доступен на Windows XP исключительно по политическим причинам, а не из-за каких-то реальных технических проблем. Впрочем, я не могу судить здесь, сохраняя нейтральный тон, о том, были ли действительно такие проблемы при введении новой модели видео-драйверов.
Теперь о нововведениях в OpenGL 3.x. Начиная с OpenGL 3.0 появилась так называемая deprecation model. Часть старой функциональности, относящаяся к fixed function rendering, а также к рендерингу, основанному на glBegin/glEnd, и многие другие устаревшие и неактуальные вещи, были объявлены как deprecated, и были впоследствии удалены из основной спецификации OpenGL 3.1. Это позволяет сохранять основную спецификацию в актуальной и современной форме. Казалось бы, это должно сломать совместимость со старыми программами. Ведь раньше, когда программа создавала контекст OpenGL, она просто получала контекст версии максимально доступной. Это было ОК, т.к. новые версии всегда являлись надстройками над предыдущими. Чтобы избежать нарушений совместимости, программы, которые хотят получить контект OpenGL 3.x должны использовать новый метод создания контекста, который позволяет указать, какую именно версию OpenGL нужно получить.

Но, как следует из того, что уже было написано раньше про расширения, и это важно, функционал OpenGL 3.x можно получить через расширения, не создавая контекст новым методом. Т.е. OpenGL 1.1 + расширения = OpenGL 3.2! Таким образом, сохраняется полная обратная совместимость. Например, геометрические шейдеры — это расширение GL_ARB_geometry_shader4.

Распространённые заблуждения

OpenGL отстаёт от Direct3D, и вообще, судя по таким вялым изменениям в спецификации, наверное уже совсем мёртв.

Собственно, причина такого заблуждения — это незнание о расширениях.

Вообще говоря, OpenGL может и часто опережает (!) Direct3D в плане инноваций, т.к.

производитель может добавить расширение к OpenGL, не дожидаясь никого, в то время как в Direct3D изменения может внести только Microsoft.

OpenGL — это для программ профессиональной графики, а Direct3D — это для игр.

Это заблуждение имеет историческую причину. OpenGL исходно разрабатывался как библиотека 3D графики, которая МОЖЕТ, но НЕ ОБЯЗАНА ускоряться аппаратно. Это также объясняет наличие некоторых функций, например рендеринг стерео-изображений, которые не нужны играм. Direct3D же разрабатывался гораздо позже, сразу с расчётом на ускорение на GPU. В момент появления многих пакетов профессиональной работы с графикой Direct3D просто не было.

Интересные нюансы

Microsoft поставляет вместе с Windows драйверы без поддержки OpenGL. OpenGL будет рендерить без ускорения, или эмулироваться через DirectX. Так что, если нужна поддержка OpenGL под Windows, нужно ставить драйвер с сайта производителя. Причины для такого неприятия OpenGL, скорее всего, опять чисто политические.

Так что же делать, как жить?

Примечание: А вот эта часть носит весьма субъективный характер.

Если Вы — разработчик, и решаете, какое API использовать, то задумайтесь над следующим: За OpenGL — массовая кроссплатформенность, в частности, доступность всех новых функций и на Windows XP, где Direct3D 10/11 нет, и никогда не будет.

Против OpenGL — драйвера в Windows из коробки не имеют поддержки OpenGL, так что ставить их нужно с сайта производителя.

Если Вы — новичок в разработке 3D-приложений, и желаете освоить эту область, то я бы рекомендовал сделать так: сначала разобраться с Direct3D (причина тому проста — Microsoft предоставляет очень качественный SDK), а затем разобраться с OpenGL (это будет очень просто после Direct3D). К сожалению, такой вещи, как SDK, для OpenGL нет. Поэтому осваивать с нуля будет сложнее.

Вот вроде и всё. Успехов в разработке!

  • 3d
  • api
  • opengl
  • directx
  • holywar

Источник: https://habr.com/post/79257/

OpenGL или DirectX: что лучше, сравнительная характеристика, особенности, советы

Сравниваем DirectX 9 и Direct 11 | Важные отличия

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

Что лучше задействовать для полного использования всех скрытых ресурсов компьютерной системы и добиться максимальной производительности? Вопрос этот является достаточно спорным, и ответить однозначно в пользу какой-то одной платформы обычно не представляется возможным, поскольку все зависит от конкретной цели, которую ставит перед собой пользователь или разработчик, а также от каждой конкретной ситуации, которая частично может быть связана с «железным» оборудованием в виде графического ускорителя, его программной поддержкой в виде драйверов и некоторыми дополнительными аспектами. Попробуем разобраться, что лучше — OpenGL или DirectX, — обратившись и к официальным источникам информации, и опираясь на мнения пользователей и разработчиков программного обеспечения, которое может требовать поддержку таких технологий.

Что такое OpenGL и DirectX?

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

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

Естественно, очень часто можно встретить и вопросы по поводу того, какая графика лучше — OpenGL или DirectX? Такая постановка тоже частично является некорректной, поскольку речь может идти не только о задействовании ресурсов видеокарт, но и звуковых или любых других «железных» и виртуальных устройств мультимедиа.

Но чаще всего речь действительно идет именно о графических ускорителях.

При этом нужно четко понимать, что выбор в пользу того или иного «моста», обеспечивающего взаимодействие видеокарты с установленной игрой или любой другой программой, где это необходимо, может зависеть и от того, насколько обязательной является такая поддержка.

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

Будь карта какой угодно ультрамодной, но с устаревшим управляющим ПО (драйверами) она не сможет использовать все те возможности, которые изначально были заявлены производителем.

Тем не менее в большинстве игр или в программах для работы с мультимедиа (например, для обработки видео) очень часто и приходится выбирать, какую именно поддержку устанавливать в настройках противопоставляя одну платформу другой (в английском варианте это обычно выглядит как «OpenGL vs DirectX»).

Что же касается основных отличий, не вдаваясь в технические аспекты функционирования, сразу же можно отметить, что платформа DirectX, являющая эксклюзивной разработкой корпорации Microsoft, предназначена исключительно для применения в Windows-системах и частично на Xbox, а OpenGL представляет свободно распространяемую кроссплатформенную технологию, применимую в других ОС (даже в мобильных). Лицензия GNU позволяет любому желающему вносить в компоненты этого API собственные изменения и дополнения, касающиеся ее усовершенствования с целью повышения производительности тех же видеокарт, в то время как улучшений DirectX приходится ждать только по мере выхода новых версий платформы. При этом даже с самыми новыми драйверами при использовании на старых версиях моста графические ускорители не выдают заявленных производителем показателей.

Главные преимущества и недостатки

Говоря о том, что лучше — OpenGL или DirectX 11 (12), отдельно стоит отметить, что первая платформа предназначена только для графики, а вторая может использоваться вообще для всего того, что относится к мультимедиа (за графику в данном случае отвечает компонент Direct3D).

Кроме того, многим экспертами отмечается, что в очень высокой степени выбор в пользу того или иного моста может зависеть и от типа графической карты.

Но, если подходить к сравнению непредвзято, считается, что в плане охвата платформ лучше выглядит OpenGL, но DirectX выигрывает в плане того, что является готовым программным продуктом вроде класса Plug&Play.

Однако не стоит забывать и том, что инструментальный набор DirectX последних версий и так доступен в OpenGL, а вот обратной поддержки нет.

OpenGL или DirectX: что лучше для игр?

Что же касается игр, и тут однозначного ответа дать нельзя. Так, например, довольно часто можно встретить комментарии по поводу того, что графические чипы линейки Radeon 9800 лучшие результаты в тестах показывают на основе DirectX, а карты GeForce серии 5XXX – при использовании OpenGL. Зато у DirectX есть еще одно неоспоримое преимущество.

Поскольку мост OpenGL изначально создавался для других платформ, с ним в Windows возможно появление разного рода багов, а вот DirectX позволяет довольно сносно пользоваться играми даже на относительно устаревших компьютерах без всяких торможений (яркий пример тому – игра Age Of Empires).

Бывает и наоборот. Так, например, некоторые пользователи отмечают, что DOOM 3 на картах серии Radeon X1XXX с использованием OpenGL просто «летает», а Half-Life 2 очень часто «тормозит». Но тут, видимо, все зависит еще и от драйверов.

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

Что лучше для BlueStacks: DirectX или OpenGL?

Достаточно часто можно встретить и вопросы по поводу использования одного из самых популярных эмуляторов Android-систем под названием BlueStacks. Какую платформу предпочесть в BlueStacks — OpenGL или DirectX? Увы, и тут однозначного ответа дать нельзя.

Однако негласно считается, что в случае установки через этот эмулятор именно игр, лучше задействовать OpenGL, а вот, если игра будет тормозить, тогда придется переключиться на DirectX. Но, опять же, все это касается только игровой графики. В случае с профессиональной обработкой и рендерингом видео придется достаточно серьезно экспериментировать.

Рекомендации разработчикам

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

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

Краткие выводы

Подводя итоги, как уже понятно, однозначного вывода в пользу одного или другого компонента сделать достаточно сложно. Между этими платформами идет постоянное соревнование.

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

Пробуйте и то и другое! Только после получения конкретных результатов и для каждого конкретного случая и будет ясно, к какой чаше весов склонится ваш выбор.

Источник: https://FB.ru/article/427373/opengl-ili-directx-chto-luchshe-sravnitelnaya-harakteristika-osobennosti-sovetyi

Чем отличается DirectX 9 от DirectX 11?

Сравниваем DirectX 9 и Direct 11 | Важные отличия

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

Что такое DirectX?

DirectX – это набор команд для Windows, которые позволяют решать две задачи.

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

Данный пакет команд появился в 1994 году, когда компания Microsoft готовилась выпустить на рынок новую версию ОС – Windows 95, однако, ее коммерческий потенциал был весьма сомнителен, так как из-за защиты и оптимизации работы многие разработчики не могли получить полноценный доступ к видеокарте, а значит использовать все ее ресурсы. Именно тогда родилась идеи написать пакет приложений способных дать такую возможность программистам. Это вывело удобство работы с данной ОС на принципиальной новый уровень, который стал конкурентоспособным с написанием игр под DOS.

В настоящее время существует несколько версий DirectX, все они работоспособные и по большому счету игроки могут пользоваться той, которая поддерживается их видеокартой. Как правило, новая версия DirectX выпускается совместно с новыми играми и влечет за собой замену видеокарты на более мощную и современную.

Однако, стоит ли новая версия таких затрат или можно обойтись старым железом. Если говорить коротко, то новая версия пакета всегда дает программистам новые возможности, что для пользователя выливается в более красивые спецэффекты.

Стоит сразу отметить, что отсутствие DirectX может иметь два последствия:

  • Игра будет без каких-либо спецэффектов.
  • Игра не запустится, а пользователь будет видеть на экране ошибку.

Стоит помнить, что DirectX устанавливается непосредственно с ОС, поэтому не быть ее попросту не может, если она не была удалена принудительно.

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

Как правило, при установке игры пользователю сразу предлагает установить DirectX, но можно вполне это сделать и самостоятельно скачав с официального сайта Microsoft.

DirectX 9 появился в 2002 году и стал по-своему революционным, разработчики вложили в него поддержку шейдеров, что в итоге дало великолепную графику для своего времени.

Ярким прим DirectX ером тому может служить игра Need For Speed, выпущенная в 2003 году, где пользователь могли видеть мельчайшие блики на стекле автомобиля, наслаждаться вылетающими из-под колес кусками грязи и снега, а также удивлялись детализации окружающего мира.

Все разработчики делали свои игры с учетом этой версии DirectX и так продолжалось до 2006 года, пока вместе с Windows Vista не появился DirectX версии 10.

Интересным фактом стало то, что данная версия не получила широкого распространения, так как сама операционка для которой она было создана не пошла в массы. Многие геймеры и просто пользователи предпочли остаться на более старой ОС и, соответственно, необходимости в обновлении пакета DirectX до 10 версии не было.

DirectX 11

В 2009 году на рынок выходит новая версия Windows под номером 7, а с ней и DirectX 11. Принципиальным отличием данной версии от более старых стало:

  • Поток видеоданных стал лучше обрабатываться за счет увеличения их числа.
  • Взаимодействие с многоядерными видеокартами стал на порядок лучше.
  • Увеличился КПД в целом средних и слабых видеокарт, на одних и тех же настройках видеокарта стала с одной и той же задачей справляться лучше, без лишнего нагрева и усиления работы кулера.

Вышеописанные процессы стали важны для разработчиков, а для игроков это вылилось в улучшение картинки и детализации.

Необходимость перехода

Выше было описано, что улучшилось при появлении DirectX версии 11, однако, многие игроки не смогли это заметить в старых играх. Этому есть вполне логичное обоснование.

Разработчики создают свои продукты под ту версию, которая существует в данный момент, поэтому более старые игры просто не несут в себе данных, которые могли бы быть использованы DirectX 11.

Чтобы ощутить все возможности этого пакета необходимо скачать новые игры или игры, которые были выпущены с учетом нового DirectX.

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

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

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

Только игры, выпущенные эксклюзивно под ПК или специально адаптированные под него, как это было с GTA 5, могут похвастаться отличным изображением и использование всей мощи видеокарты.

Источник: https://vchemraznica.ru/chem-otlichaetsya-directx-9-ot-directx-11/

Интернет журнал о выборе лучших товаров и услуг

Сравниваем DirectX 9 и Direct 11 | Важные отличия

05.08.2019 18:35:29

Эксперт: Михаил Кауфман

Даже покупаемые «для учёбы» компьютеры то и дело используются для игр. И разработчики операционной системы Windows прекрасно это понимают, интегрируя прямо в код ядра библиотеки и механизмы взаимодействия с видеокартой. И DirectX – как раз такой инструмент.

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

DirectX развивается одновременно с операционной системой Windows. Каждые 1-3 года выходят новые его версии, направленные на улучшение работы периферийного оборудования. И поэтому многим начинающим геймерам может быть непонятно, чем отличается одна итерация от другой.

Разберёмся, чем отличается Direct 9 от DirectX 11 и других версий.

DirectX 9

Интерфейс DirectX 9 был представлен одновременно с операционной системой Windows Server 2003 и входит в неё в качество основного API взаимодействия с графическим и звуковым оборудованием.

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

Пока не особо понятно, почему компания Microsoft решила имплементировать DX9.0 в серверную операционную систему. Однако в 2004 году она же выпустила Windows XP SP2, и этот API входил в неё. Именно так и началось распространение DX9.0 среди домашних пользователей.

По сути, все игры, выпущены в период с 2004 года по 2009 год, ориентированы на использование DirectX 9. Это же справедливо и для видеокарт. Как настольные, так и мобильные (предназначенные для ноутбуков), они предназначены для работы именно с этим интерфейсом.

  • Поддержка шейдеров;

  • Повышенная производительность на очень старых компьютерах.

  • Сравнительно узкое распространение (нативно встроен только в Windows XP SP2);

  • Ограниченная производительность за счёт не самой правильной работы с многопоточностью.

Кстати! Казалось бы, куда делся DirectX 10? А он никуда и не девался, он есть. Десятая версия интерфейса вышла в 2006 году вместе с операционной системой Windows Vista. Но сама эта среда была настолько «тормознутой» и «глючной», что о ней предпочли побыстрее забыть и создатели, и разработчики игр.

Различия между DirectX 9 и DirectX 11 – и что выбрать

Итак, основным различием между DX9 и DX11 стала поддержка многопоточных вычислений. Впрочем, этим разница не ограничивается.

Параметр

DirectX 9

DirectX 11

Основная поддерживающая операционная система

Windows XP SP2

Windows 7

Поддержка шейдеров

Да

Да

Шейдерная модель

2.0

5.0

Оптимизация для многопоточных вычислений

Слабая

Сильная

Таким образом, DX11 показывает лучшие визуальные результаты и повышенную производительность на современных видеокартах.

Что выбрать?

Если установленная компьютерная игра позволяет выбрать API для взаимодействия с «железом» (такое допускается в лончерах WoT и некоторых других проектов), то принимать решение следует исходя из нескольких параметров:

  1. Установленная операционная система. На Windows 7 DX11 является нативным интерфейсом, DX9 поддерживается, но его нужно устанавливать отдельно. На Windows XP SP2 нативный – DX9, а вот DX11 не поддерживается вообще;

  2. Установленная видеокарта. Если графический ускоритель ориентирован на работу с DX11 – стоит выбирать именно DX11;

  3. Желание получить впечатляющие визуальные эффекты. Если оно есть – лучше выбирать DX11.

В целом, по состоянию на апрель 2019 года – а именно тогда был написан данный материал – даже DX11 является устаревшим интерфейсом.

Лучше выбирать DX12, так как он поддерживает наиболее свежую шейдерную модель и даже способен работать с трассировкой лучей – технологией, аппаратная реализация которой была представлена в 2018 году, и которая сделала игры невероятно реалистичными за счёт отражений, отблесков и длинных теней.

Источник: https://expertology.ru/sravnivaem-directx-9-i-direct-11-vazhnye-otlichiya/

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.