OpenGL или DirectX: что лучше использовать для разработки игр?

184
технологии 2.webp

Последнее обновление 10.01.2023 — Василий Иванов

Графические API, такие как OpenGL и DirectX, действуют как мост между программным обеспечением и графическим оборудованием, используемым для игр. Эти API предоставляют стандартизированные методы для отображения 2D- и 3D-графики на экране. Они стали основополагающими для разработки игр за последние пару десятилетий.

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

По теме:  Все различные способы идентификации музыки с помощью Shazam на вашем iPhone

DirectX против OpenGL: обзор основных функций

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

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

DirectX против OpenGL: область действия API

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

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

По теме:  Как назначить сочетания клавиш программам в Windows

OpenGL против DirectX: платформы

OpenGL — это бесплатный API, которым управляет некоммерческая компания Khronos Group, а DirectX разработан Microsoft. DirectX работает в основном на Windows и Xbox, а другие платформы, такие как Linux, постепенно получают поддержку. OpenGL является кроссплатформенным, что позволяет использовать его для разработки игр в различных операционных системах и игровых консолях.

DirectX против OpenGL: аппаратные ресурсы

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

DirectX против 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 обрабатывает только графику, что делает его проще по своей природе. Тот факт, что он работает на большем количестве платформ, также упрощает выпуск игр с этим требованием.

Простота использования графического API не так важна, как раньше для разработчиков игр. С такими движками, как Unity, взаимодействующими с графическими API за кулисами, достаточно одного нажатия кнопки, чтобы поменять используемый API. Если вы не создаете игру с нуля, маловероятно, что вы заметите разницу в простоте использования каждого API.

OpenGL или DirectX: графические функции

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

OpenGL или DirectX: производительность игры

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

Единственный способ узнать, какой из этих API работает лучше всего, — это провести тестирование. Благодаря совместимости Unity с обоими API мы можем создать проект и протестировать образец игры с обоими API, чтобы создать эталон производительности.

Эти тесты проводились как с 2D-, так и с 3D-графикой, чтобы убедиться, что их различные конвейеры не являются существенным фактором. Каждый тест выполняется в течение 120 секунд обычного игрового процесса, а количество кадров в секунду измеряется для определения производительности. Все тестирование проводилось на одном ПК.

Тест производительности 3D: Unity Carting Microgame

Unity Carting Microgame — это бесплатный шаблон, содержащий все необходимое для создания простой гоночной игры. Он поставляется с обучающими программами, но нас больше интересует сама игра. Мы создали Carting Microgame с OpenGL и DirectX, чтобы сравнить их производительность, и результаты были следующими:

Наименьшее Наивысшее Среднее DirectX

OpenGL

331 848 365,05
247 819 283,7

DirectX превзошел OpenGL в нашем тесте 3D, достигнув впечатляющей частоты кадров. Результаты OpenGL по-прежнему более чем играбельны.

2D-тест производительности: Unity Platformer Microgame

Как и Carting Microgame, Unity Platformer Microgame бесплатна и содержит отличные обучающие инструменты. Как и ожидалось, 2D-игра в наших тестах работает лучше, чем 3D, но вы можете оценить результаты сами.

Наименьшее Наивысшее Среднее DirectX

OpenGL

599 850 767,367
302 604 515.417

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

OpenGL или DirectX 11: заключение о производительности

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

DirectX или OpenGL: что лучше использовать для разработки игр?

Выбор правильного графического API зависит от нескольких факторов. DirectX является наиболее широко используемым графическим API. Многие разработчики игр создают свои игры для Windows и Xbox, прежде чем портировать их на OpenGL для других платформ. Если вы публикуете игру исключительно за пределами Windows и Xbox, вы можете с самого начала использовать OpenGL.

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