Сравнительный тест DirectX 11, OpenGL и Vulkan
На минувшей неделе был представлен API Vulkan, о широкой поддержке которого заявили AMD и NVIDIA. Новый графический интерфейс разрабатывал Khronos Group, консорциум, основанный в 2000 году. Khronos Group отвечает за разработку и поддержку открытых стандартов в сфере мультимедийных приложений на разных платформах и устройствах. Консорциум поддерживают AMD и NVIDIA, а также многие другие компании.
На минувшей неделе была ратифицирована финальная версия 1.0 API Vulkan. AMD и NVIDIA представили соответствующие бета-драйверы. AMD заранее выпустила бета-версию Radeon Software еще 14 февраля. NVIDIA представила драйвер GeForce 356.39, который тоже ориентирован на поддержку API Vulkan.
Подход API Vulkan очень похож на API Mantle. Суть заключается в том, чтобы разработчики получили более глубокий доступ к «железу», чтобы выжать из него максимум. Такой подход позволяет максимально избежать существующих «узких мест». С другой стороны, разработчики должны точно знать, что они делают – например, при работе с памятью. Интерфейс OpenGL не так популярен, как DirectX, но позволяет выжать больше.
Интерфейс API Vulkan в версии 1.0 поддерживается под Windows 7, Windows 8.1, Windows 10, Android и Linux. Разработчики игр пока что не объявили о поддержки в конкретных играх, но здесь стоит дождаться Games Developer Conference, которая будет проводиться с 14 по 18 марта в Сан-Франциско. Из игровых движков пока есть информация о Source 2, который уже поддерживает API Vulkan. Процесс отладки облегчается поддержкой Valve, LunarG и Codeplay.
The Talos Principle
Хорошо, но какая игра или движок поддерживают API Vulkan? Игра The Talos Principle разрабатывалась компанией Croteam, которая и в прошлом была известна поддержкой многих графических API. И в последней итерации игра The Talos Principle не стала исключением – она поддерживает DirectX 9, DirectX 11, OpenGL и теперь Vulkan. Для студии разработчиков Vulkan является пробным шаром, хотя API Vulkan доступен в версии 1.0, поддержка пока находится в бета-стадии. На добавление поддержки разработчики Croteam затратили порядка трех месяцев. Но универсальный характер API позволяет вскоре представить вариант Linux.
API Vulkan теоретически совместим с несколькими платформами – но пока что тесты и сравнения можно провести только под Windows, причем здесь имеются свои ограничения. Реализация пока остается на очень раннем этапе. Путь рендеринга DirectX 11 совершенствовался многие годы, поэтому потенциала для оптимизации здесь уже нет. Здесь ситуация больше зависит от разработчиков драйверов, а именно AMD и NVIDIA. Игра The Talos Principle стала первой с поддержкой Vulkan. Поэтому пока нет возможности сделать сравнительный тест для оценки хорошей или плохой реализации поддержки.

Новые технологии первое время реализуются в примерах, подготовленных производителями. В случае DirectX 12 акцент был выставлен на Draw Calls, тот же тест 3DMark DirectX 12 опирается только на измерение производительности Draw Calls, игры DirectX 12, подобные Star Wars, тоже пытаются задействовать подобную нагрузку. Но The Talos Principle не так сильно зависит от высокой скорости Draw Call, чтобы низкоуровневый API дал большую разницу.
Поддержка API Vulkan версии 1.0 находится на ранней стадии, то же самое касается драйверов AMD и NVIDIA. Оба драйвера, по сути, относятся к бета-версиям, именно так их рассматривают производители GPU. Здесь обычно нет новых улучшений производительности или поддержки новых технологий, так что мы получаем шаг назад. Но как только определенный уровень разработки будет достигнут, драйверы обоих разработчиков GPU получат поддержку Vulkan в финальной версии. Когда это произойдет – не совсем понятно. Но пока ключевые приложения не используют Vulkan и игры с поддержкой API находятся в состоянии бета-версии, так что разработчики GPU могут спокойно дорабатывать свои драйверы.
Для тестов мы взяли нашу тестовую систему для видеокарт. Драйверы видеокарт AMD и NVIDIA мы уже описали выше. В настройках мы выставили максимальный уровень графики, но при этом протестировали и низкие разрешения вплоть до 1.280 x 720 пикселей, чтобы увеличить производительность Draw Call.



Как можно видеть по результатам, API Vulkan дает существенный прирост по сравнению с OpenGL. Но до производительности DirectX 11 новый API не дотягивает. Тому есть несколько причин. С одной стороны, разработка под Vulkan находится в ранней стадии. Это касается и самого API, и драйвера, и игры The Talos Principle. По сравнению с OpenGL новый интерфейс позволяет освободить часть ресурсов и избежать «узких мест». Но DirectX много лет совершенствовался до текущего уровня. В любом случае, потенциал у API Vulkan очень хороший.
Если погрузиться в детали, то визуальных отличий между API Vulkan и DirectX 11 мы не обнаружили. Так что путь рендеринга очень хорошо адаптирован. У текущей реализации The Talos Principle видеокарты с 2 Гбайт памяти получают падение производительности, вероятно, из-за не самой эффективной работы с памятью. Как и Mantle и DirectX 12, API Vulkan может обращаться к ресурсам памяти на более глубоком уровне – сей факт можно рассматривать как преимущество, но он может стать и недостатком, если разработчики не смогут эффективно использовать память.
Несколько разочаровала ошибка в текущем драйвере NVIDIA, из-за которой после каждого теста приходилось перезагружать систему. Без перезагрузки игра «вылетала». Хотя с драйвером AMD мы не обнаруживали подобной ошибки.
Нынешняя реализация API Vulkan кажется обещающей. Пока что для игр на настольных ПК она будет не такой актуальной, поскольку рынок DirectX 11 и 12 очень велик, и по сравнению с тем же DirectX 12 затраты на реализацию могут быть слишком велики, а отдача слишком мала. Но если игры необходимо запускать на разных платформах с разными аппаратными требованиями, Vulkan может сыграть важную роль. В любом случае, следует дождаться реакции со стороны разработчиков игр, иначе мы получаем проблему курицы и яйца, из которой сложно выйти.
DirectX против OpenGL: что лучше или кто победит?

О видеокартах
Автор Андрей Андреев На чтение 3 мин Просмотров 248 Опубликовано 24.01.2021
Здравствуйте, дорогие посетители моего блога! Сегодня мы с вами окончательно выясним, что лучше — 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, DirectX, OpenCL, CUDA?
сразу прошу прощение за очень глупый вопрос, но чем отличается OpenСL от DirectX, OpenGL, CUDA? почему есть сравнение DirectX с OpenGL и OpenCL с CUDA, но нет сравнения допустим OpenCL и DirectX? я догадываюсь что они очень разные, но как я понимаю они все позволяют обращаться к видеокарте и ускорять с помощью нее вычисления. Хотелось бы узнать различие между этими технологиями и что за что отвечает?
Отслеживать
задан 21 апр 2020 в 15:47
Илья Антипанов Илья Антипанов
111 1 1 серебряный знак 9 9 бронзовых знаков
А как вы собираетесь сравнивать сладкое и зелёное?
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 — открытое, для разнообразных видеокарт.
Писать на них игры можно, конечно, но эти библиотеки (или это все таки фреймворки?) не предназначены для отрисовки графики.