Что лучше opengl или directx
Перейти к содержимому

Что лучше opengl или directx

  • автор:

OpenGL или DirectX?

Я начинающий геймдев. Неплохо знаю SFML. Знаю c++. И вот меня потянуло на 3D игры. Начал думать: OpenGL или DirectX. В итоге недавно начал изучать DirectX,но и OpenGL тоже интересует. Прошу расписать плюсы и минусы,и что же будет лучше для создания игр/движков.

  • Вопрос задан более трёх лет назад
  • 8722 просмотра

Комментировать
Решения вопроса 1

Nipheris

Станислав Макаров @Nipheris Куратор тега C++

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

OpenGL это кроссплатформенное API, раньше было не очень удобно начинать работу с ним на Винде, сейчас доступны различные библиотеки (GLEW, GLFW) и это больше не проблема.
DirectX возможно даст вам больше возможностей, но там много заморочек с Windows-специфичными вещами, т.к. DirectX работает через технологию COM. Поначалу будет непривычно.

Я бы на вашем месте начал с OpenGL и посматривал на Vulkan. Знание OpenGL полезно ещё тем, что проще будет использовать родственные API, например WebGL, если захотите писать внутрибраузерный код.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 1

Ni55aN

OpenGL и DirectX нельзя сравнивать, так как первый только для графики, а второй для всего (Direct3D для графики)

OpenGL
+ крассплатформенный (десктоп, мобайл, веб)
— для работы со звуком, вводом, сетью нужно искать соответствующие инструменты. Может отразиться на времени разработки

DirectX
— только Windows, xBox и т.п.
+ все инструменты в одном виде, готовое взял и пользуйся

Как по мне, создавать движки в наше время дело дорогостоящее и неоправданное, так как есть много готовых вариантов. Среди них немало поддерживают D3D + OpenGL, многие только OpenGL. Так что в плане охвата платформ OpenGL лучше.

То есть однозначно выбрать нельзя, нужно учитывать какие платформы вам нужны и как рассчитываете силы/время. Может проще и надежнее будет взять UE4 или ему подобный движок. На крайних случай Urho3D

DirectX против OpenGL: что лучше или кто победит?

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 vs. DirectX: что использовать для разработки игр?

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 является кроссплатформенным, что делает его пригодным для разработки игр на различных операционных системах и игровых консолях.

Интересно: Обзор Tenda i9: для офисов, ресторанов, отелей и залов

DirectX vs OpenGL: аппаратные ресурсы

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

DirectX vs OpenGL: документация

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

Использование OpenGL и DirectX для разработки игр

DirectX vs OpenGL

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

Интересно: Что такое Scratch, язык программирования?

Простота использования графического 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

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 имеют значение только для тех, кто ищет специфические нишевые возможности.

В чем различие между OpenGL, DirectX, OpenCL, CUDA?

сразу прошу прощение за очень глупый вопрос, но чем отличается OpenСL от DirectX, OpenGL, CUDA? почему есть сравнение DirectX с OpenGL и OpenCL с CUDA, но нет сравнения допустим OpenCL и DirectX? я догадываюсь что они очень разные, но как я понимаю они все позволяют обращаться к видеокарте и ускорять с помощью нее вычисления. Хотелось бы узнать различие между этими технологиями и что за что отвечает?

Отслеживать
задан 21 апр 2020 в 15:47
Илья Антипанов Илья Антипанов
111 1 1 серебряный знак 8 8 бронзовых знаков
А как вы собираетесь сравнивать сладкое и зелёное?
21 апр 2020 в 16:02

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

21 апр 2020 в 16:05

Для начала: OpenGL и DirectX предназначены для работы с графикой, а CUDA и OpenCL — для распараллеливания на GPU. Т.е эти внутри этих пар их можно как-то сравнивать, но между — нет.

21 апр 2020 в 16:06

То что сладкое и зелёное принадлежит моему яблоку, ещё не значит эти характеристики можно сравнивать между собой

21 апр 2020 в 16:07

@ArchDemon можно ли с помощью каждой технологии сделать подсчеты с графикой? Если да, то вполне можно сравнить или все таки расписать в чем принципиальное их отличие, где используется одна технология, а где другая. Если обратиться к википедии и сравнить directX и openCL то область применения у них попадает на графику, встает вопрос когда рационально использовать одно а когда другое.

21 апр 2020 в 16:15

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

OpenGL vs DirectX

Это два движка для отрисовки графики.

DirectX — это только для Windows, с C++ и интерфейсами, с закрытым кодом.

OpenGL открытый, есть для многих разных платформ. Внутри код написан в Си стиле.

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

OpenCL vs CUDA

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

CUDA — разработка от Nvidia. Закрытые исходники, только для Nvidia. OpenCL — открытое, для разнообразных видеокарт.

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *