DirectX против OpenGL: что лучше или кто победит?
Здравствуйте, дорогие посетители моего блога! Сегодня мы с вами окончательно выясним, что лучше — DirectX или OpenGL в играх и детально проведем небольшое сравнение. О том, что такое Vulkan RT и для чего он нужен, вы можете почитать здесь.
Выбираем между DirectX и OpenGL
Главное отличие между ними в том в том, что Директ имеет закрытый заточен под операционную систему Windows и в другой среде попросту не работает. OpenGL распространяется с открытым исходным кодом и подходит для любой платформы, которая может его поддерживать.
Это, например, Unix-системы, в том числе Android и iOS, которые сегодня являются весьма популярными игровыми платформами, а также ряд игровых консолей.
Любой энтузиаст может модифицировать эти библиотеки согласно собственным потребностям и использовать эти наработки при создании видеоигр.
Вне 3D графики вообще и видеоигр в частности ни DirectX, ни OpenGL не используются, так как не имеют необходимого инструментария для выполнения других задач.
Какой графический рендеринг лучше
Для игр под Windows поддержка OpenGL реализована слабо — список приложений, где можно активировать этот инструмент вместо DirectX, ограничивается парой десятков.
Самая известная и популярная из них — MOBA Dota 2. OpenGL любят инди-разработчики и добавляют его поддержку в свои проекты, часто криво и не доведя до ума.
DirectX — совсем другое дело. 9, 10 или 11 его версии скачивались отдельно, а вот 12 уже включена в базовый пакет Windows 10. На подавляющем количестве персональных компьютеров именно Виндовс и установлена в качестве операционной системы, а PC сегодня остается самой популярной игровой платформой.
Соответственно, для игр разработчики стараются максимально полно реализовать поддержку DirectX.
OpenGL, Vulkan RT и прочие подобные инструменты не составляют серьезной конкуренции и являются скорее экзотикой. Игры с их поддержкой не создаются массово в таком количестве, чтобы рассматривать это явление всерьез как достойное внимания.
Что касается производительности, то нужно рассматривать производительность конкретной игры. Да, некоторые видеоигры на OpenGL дают качество графики лучше, но это скорее исключение, чем правило. В основной массе тестов же DirectX обычно дает больший FPS при тех же настройках качества.
Что касается эмуляторов Андроид на Виндовс, например BlueStacks, Nox или LD Player, то тут ситуация немного другая. Так как напрямую Android не поддерживает DirectX и рассчитан на работу с OpenGL, взаимодействие РСМ и графических библиотек реализовано с помощью «костылей» и не всегда вменяемо. Тут, в первую очередь, нужно тестировать сам эмулятор.
Однако, имея некоторый опыт их использования, могу утверждать, что на OpenGL производительность почти всегда лучше.
Относительно холивара DirectX Vs OpenGL, а конкретнее, какой из инструментов победит, моё мнение следующее. Microsoft, который разрабатывает DirectX, будет позволять поддержку в играх сторонних библиотек ровно до тех пор, пока это будет выгодно и пока они не станут для него угрозой финансовых потерь.
Как только дело коснется прибыли, волшебным образом все прочие инструменты от конкурентов в среде Windows перестанут работать или будет работать неправильно. Как фактический монополист на рынке операционных систем компания может себе такое позволить.
Также советую почитать «Как решить проблему, если видеокартой не поддерживается DirectX 11 или 12». Буду признателен всем, кто расшарит этот пост в любой социальной сети. До скорой встречи!
С уважением, автор блога Андрей Андреев.
Что лучше OpenGL или DirectX?
Там, где вам предоставляется возможность выбора, DirectX, особенно новейшие его версии, скорее всего, обеспечит лучший общий игровой опыт, чем OpenGL. Однако OpenGL может предложить более высокую производительность на старых устройствах.
В настоящее время выбор между OpenGL и DirectX в играх не так распространен, как раньше, но вы все еще можете его увидеть. И прежде чем его сделаеть, вы можете задаться вопросом, в чем разница и какой вариант обеспечивает оптимальный игровой процесс.
Что такое OpenGL?
OpenGL (Open Graphics Library) — это кроссплатформенный API для работы с 2D и 3D графикой. Это один из наиболее широко используемых графических стандартов в мире, используемый разработчиками при создании программного обеспечения, начиная от видеоигр и приложений виртуальной реальности и заканчивая инструментами автоматизированного проектирования (САПР).
API (интерфейс прикладного программирования) упрощает эффективное взаимодействие программного обеспечения и компьютерного оборудования. Что еще более важно, API стандартизирует процесс. Без доступа к графическим API разработчики программного обеспечения столкнулись бы с трудностями при обеспечении доступа к широкому спектру доступных графических процессоров и их использовании.
OpenGL был создан в 1992 году компанией Silicon Graphics Inc, но сейчас им управляет Khronos Group, технический консорциум, который также отвечает за Vulkan и несколько других менее известных API.
Разница между OpenGL и DirectX
Любое параллельное сравнение OpenGL и DirectX было бы ошибочным с самого начала. OpenGL предназначен только для 2D- и 3D-графики, тогда как DirectX — это набор API-интерфейсов, включающий Direct3D и Direct2D для графики, XAudio2 для звука, DirectWrite для текста и многое другое. Вопрос действительно должен звучать так: в чем разница между OpenGL и Direct3D?
Основное различие между двумя API заключается в том, что Direct3D предназначен только для платформ Microsoft, то есть для Windows и Xbox. OpenGL является кроссплатформенным и совместим с системами Microsoft, Apple и Linux. Примечательно, что Apple отказалась от OpenGL на macOS и iOS в пользу своего Metal API, но он по-прежнему поддерживается.
Если посмотреть на частоту кадров в играх и использование системных ресурсов, OpenGL и DirectX 11 почти равны. Это зависит от того, насколько хорошо разработчик игры реализует каждый API, но в большинстве случаев между двумя стандартами мало заметна разница. Изображение ниже демонстрирует, насколько производительность OpenGL похожа на DirectX 11 и даже на его преемника, Vulkan.
DirectX 12 и 12 Ultimate помогли Microsoft API опередить OpenGL, особенно в отношении визуального качества и эффектов, присутствующих во многих современных играх. Vulkan, который представляет собой попытку объединить инструменты OpenGL и OpenGL ES (Embedded Systems) в единый API, призван закрыть этот пробел.
В прошлом OpenGL и Direct3D были прямыми конкурентами. Но по мере того, как битва за большую долю рынка разработки игр развивалась и становилась менее интенсивной, нередко игра, использующая OpenGL для графики, использовала некоторые компоненты DirectX для звука и т. д. Имея ввиду, что при этом игра была разработана для Windows, конечно.
Какие игры используют OpenGL?
Помимо мобильных устройств, в современных играх доминируют Windows, Xbox и PlayStation. Игры для Windows и Xbox преимущественно используют DirectX, а новые консоли Sony используют собственные графические API. OpenGL по-прежнему широко используется для мобильных игр, где из-за того, что Android является платформой на базе Linux, использование DirectX является менее жизнеспособным вариантом.
По-прежнему существует множество игр, разрабатываемых с использованием OpenGL, но это, как правило, малобюджетные игры от небольших разработчиков. Немногие из игр AAA для ПК или консолей за последние 15 лет используют этот, когда-то популярный API.
Самая известная и самая популярная игра на OpenGL — это Minecraft. Другие известные игры на OpenGL включают Doom (2016), Baldur’s Gate: Dark Alliance и его продолжение, Desperados 3 и 7 Days to Die.
Что лучше для игр OpenGL или DirectX?
Нам, игрокам, не часто предоставляется возможность выбирать между OpenGL и DirectX. По крайней мере это справедливо для игр, разработанных за последние 10-15 лет. Если игра была разработана с использованием OpenGL, она обычно просто запускается с использованием OpenGL не предоставляя выбора API . В наши дни чаще можно увидеть выбор между DirectX и Vulkan.
Скорее всего, вы столкнетесь с игрой OpenGL на своем мобильном устройстве. Такие игры, как Fortnite для Android, могут использовать OpenGL или Vulkan, в зависимости от устройства. Но опять же, обычно у вас не будет возможности выбирать между ними.
Если вам предоставляется выбор между OpenGL и DirectX, нет ничего плохого в том, чтобы попробовать их оба, чтобы увидеть, какой из них лучше всего подходит для вашей системы. OpenGL может обеспечить немного лучшую производительность на старом компьютере, но использование DirectX, вероятно, приведет к более приятному визуальному восприятию.
Часто задаваемые вопросы
● Minecraft использует OpenGL?
— Minecraft, одна из самых популярных игр в мире, использует API OpenGL. Она также использует DirectX 11 или новее при игре на Windows (Bedrock Edition), поскольку пакет Microsoft API предоставляет другие инструменты, необходимые для запуска игры.
OpenGL vs. DirectX: что использовать для разработки игр?
Графические API, такие как OpenGL и DirectX, служат связующим звеном между программным и графическим оборудованием, используемым для игр. Эти API предоставляют стандартизированные методы отображения 2D и 3D графики на экране. За последние несколько десятилетий они стали основополагающими для разработки игр.
Такие движки, как Unity, предлагают выбор между графическими API, которые они используют, но как выбрать правильный вариант для своей игры? Присоединяйтесь к нам, мы сравним OpenGL и DirectX, чтобы дать вам представление о том, какой из этих инструментов лучше для вас.
DirectX против OpenGL: обзор основных характеристик
В основе DirectX и OpenGL лежит один и тот же графический конвейер, и так было на протяжении многих лет. Оба API используют точки, называемые вершинами, для построения сложных графических примитивов. Каждая вершина хранит свои координаты и другую важную информацию. Однако каждая библиотека использует вершины по-разному.
Они могут выполнять похожие функции, но вы заметите разницу между OpenGL и DirectX, если будете работать с ними.
DirectX vs OpenGL: область применения API
Прежде чем углубляться в эту тему, важно отметить, что, хотя они оба являются графическими API, OpenGL и DirectX имеют разные сферы применения. OpenGL — это чистый графический API, что означает, что он не имеет дела ни с чем, кроме 2D и 3D графики. DirectX, с другой стороны, представляет собой набор графических, аудио, сетевых и других аппаратных API, которые работают вместе.
В некоторых случаях OpenGL использует DirectX для выполнения функций, которые он не может выполнить самостоятельно. В остальной части этой статьи мы проигнорируем эту разницу между двумя API, сосредоточившись на графических элементах каждого инструмента.
OpenGL vs DirectX: платформы
OpenGL — это бесплатный API, управляемый некоммерческой компанией Khronos Group, в то время как DirectX производится компанией Microsoft. DirectX работает в основном на Windows и Xbox, а другие платформы, такие как Linux, постепенно получают поддержку, но пока что ситуация плачевна. OpenGL является кроссплатформенным, что делает его пригодным для разработки игр на различных операционных системах и игровых консолях.
Интересно: Энергозависимая и энергонезависимая память: в чем разница?
DirectX vs OpenGL: аппаратные ресурсы
DirectX оставляет управление аппаратным обеспечением на усмотрение разработчика, предоставляя вам возможность эффективно распределять ресурсы по мере необходимости. OpenGL управляет аппаратным обеспечением, но это имеет свои преимущества, поскольку вам не нужно беспокоиться об управлении ресурсами самостоятельно.
DirectX vs OpenGL: документация
Доступ к подробной документации может значительно облегчить разработку игр при работе с API. DirectX и OpenGL предлагают регулярно обновляемую документацию и полезные сообщества разработчиков. Оба API ежегодно получают большое количество обновлений, чтобы обеспечить наилучшие возможности разработки.
Использование OpenGL и DirectX для разработки игр
Разработчики создали множество красивых и хорошо оптимизированных игр на современном рынке, используя как OpenGL, так и DirectX. Есть несколько моментов, которые следует учитывать при выборе API для 2D/3D графики. Некоторые разработчики просто полагаются на тот инструмент, с которым им удобнее всего работать.
OpenGL или DirectX: платформы
Мы уже коснулись платформ, но это очень важный момент для разработчиков. Если вы хотите создавать игры для Nintendo Switch, Playstation 4 или Linux, вам придется работать с OpenGL или другим API с их поддержкой. DirectX создан для Windows и Xbox и имеет ограниченную совместимость с другими системами.
OpenGL или DirectX: совместимость с движком
В настоящее время большинство разработчиков игр используют для создания своих игр движки типа Unity и Unreal. Оба этих движка поддерживают OpenGL и DirectX, как и другие кроссплатформенные движки для разработки игр.
OpenGL или DirectX: простота использования
Некоторые утверждают, что OpenGL проще в работе, чем DirectX. Наряду с аппаратными ресурсами, OpenGL работает только с графикой, что делает его более простым по своей природе. Тот факт, что он работает на большем количестве платформ, также облегчает выпуск игр с этим требованием.
Интересно: Что такое стандарт HDR10+ и его отличие от Dolby Vision?
Простота использования графического API уже не так важна для разработчиков игр, как раньше. С такими движками, как Unity, взаимодействующими с графическими API за кулисами, для смены используемого API достаточно одного нажатия кнопки. Если только вы не создаете игру с нуля, вряд ли вы заметите разницу в простоте использования каждого API.
OpenGL или DirectX: графические возможности
Если вы не относитесь к числу редких случаев, вряд ли вы заметите огромную разницу в доступных вам возможностях этих API. Они оба поддерживают возможности вашей графической карты, и это изменится только в том случае, если графические процессоры претерпят значительные изменения в будущем.
OpenGL или DirectX: производительность в играх
Между разработчиками ведется много споров относительно производительности этих API. Трудно представить, что OpenGL или DirectX имеют значительные различия в производительности, хотя в Интернете часто встречается утверждение, что OpenGL более плавный и эффективный.
Единственный способ выяснить, какой из этих API работает лучше, — это тестирование. Благодаря совместимости Unity с обоими API, мы можем создать проект и протестировать образец игры с обоими API, чтобы определить эталон производительности.
Эти тесты были проведены как с 2D, так и с 3D графикой, чтобы убедиться, что различия в конвейерах не являются существенным фактором. Каждый тест длится 120 секунд обычного игрового процесса, и для определения производительности измеряется количество кадров в секунду. Все тесты проводились на одном и том же компьютере.
Тест производительности 3D: Микроигра Unity Carting
Unity Carting Microgame — это бесплатный шаблон, который содержит все необходимое для создания простой гоночной игры. К нему прилагаются учебники, но нас больше интересует сама игра. Мы создали микроигру Carting с использованием OpenGL и DirectX, чтобы сравнить их производительность, и результаты оказались следующими:
Интересно: Обзор Lenovo ThinkPad P14s Gen 2 — один из лучших
Наименьшее | Наибольшее | Среднее | |
DirectX | 331 | 848 | 365.05 |
OpenGL | 247 | 819 | 283.7 |
Тест 2D производительности: Платформер на Unity
Как и микроигра «Картинг», микроигра «Платформер Unity» бесплатна и снабжена отличными инструментами для обучения. Как и ожидалось, 2D-игра в наших тестах работает лучше, чем 3D, но вы можете оценить результаты сами.
Наименьшее | Наибольшее | Среднее | |
DirectX | 599 | 850 | 767 |
OpenGL | 302 | 604 | 515 |
Как видно из приведенных выше результатов, DirectX обеспечил гораздо более высокую среднюю частоту кадров в нашем тестировании. Хотя разница может показаться драматичной, оба показателя вполне пригодны для игры.
OpenGL или DirectX 11: вывод о производительности
Хотя многие говорят, что OpenGL работает лучше, чем DirectX, последний API показал лучшие результаты в обоих наших тестах. Это далеко не окончательный результат, поскольку многие факторы играют роль в производительности игр, особенно по мере их усложнения.
DirectX или OpenGL: что использовать для разработки игр?
Выбор правильного графического API зависит от нескольких факторов. DirectX является наиболее широко используемым графическим API. Многие разработчики игр создают свои игры для Windows и Xbox, а затем переносят их на OpenGL для других платформ. Если вы публикуете игру исключительно за пределами Windows и Xbox, возможно, вам будет выгодно использовать OpenGL с самого начала.
Производительность также является фактором, который необходимо учитывать, хотя наше тестирование показало, что она довольно незначительна при использовании таких движков, как Unity. По сути, различия между этими двумя графическими API имеют значение только для тех, кто ищет специфические нишевые возможности.
||Какой движок лучше:directx9/opengl/software?
Все зависит от конкретной видекарты и драйверов. В каждом случае надо подбирать индивидуально. Производительность и безглючность может сильно зависеть от версии драйвера на одном и том же компьютере как на OpenGL так и на DirectX.
OpenGL наиболее оптимальный вариант, но и он бывает глючит, особенно если нет нормальных драйверов, и если параллельно с 3D Studio запускаются другие приложения использующие ускоритель.
DirectX стоит выбирать если OpenGL не работает нормально. (Помнится на Woodoo 5 OpenGL страшно тормозил при отображении меша в режиме Vertex SubObject Level)
Software самый безглючный вариант, но и самый тормозной. Его надо ставить когда ни Open GL ни DirectX не работают как надо. Кроме того текстуры в Software-режиме рисуются криво, и их нельзя фильтовать.
Guest
на больших сценах при фиговой видюхе лучше софтваре, если проц достаточно мощный
Guest
OpenGL, Software. Директ туфта.
Guest
Это не движки, а графические библиотеки, на которых в свою очередь работает как ты называешь «движок» твоей 3Д программы. Как уже сказали каждый из них имеет свои недостатки и преимущества. Икс — продукт Мелкософта со всеми вытекающими отсюда багами, но в то же время хорошая оптимизация под её продукты, например если знаешь игрушку «Эпоху Империй» с довольно хорошей графикой шла без тормозов на мёртвых компах (не учитывая процесса инсталяции ).
«Открытая графическая библиотека» изначально была разработана Силикон Графиксом для сових графических станций (а уже потом была перенесена на ПК), как понимаешь у Силикона опыта в этой области побольше, но учитывая, что изначально она создавалась для другой платформы + баги при переносе + сейчас разработкой OpenGL2 занимается несколько компашек, отсюда следует, что ГЛ имеет не мало своих недостатков, но тем не менее профессионализм не пропьёшь.