Разница между vulkan и opengl. Vulkan API (glNext) от Khronos Group

Vulkan - это новое API для создания 3D приложений. Его разработало Khronos Group, которая занимается и развитием OpenGL. Большой вклад в создание API вложила компания AMD. Хотя и многие другие компании работали над ним, например Microsoft, Apple, Google, Sony. Это API поддерживают такие создатели "железа" как: NVidia, AMD, Intel, Qualcomm, Imagination Technologies, ARM.

Чем отличается Vulkan от OpenGL

Статья на Википедии выделяет 4 основных отличия:

  1. Никаких глобальных состояний, все состояния привязаны к объектам.
  2. Состояния привязываются к буферу команд, а не к контексту, как в OpenGL.
  3. В OpenGL работа с памятью и синхронизация происходит не явно, в Vulkan разработчик будет иметь возможность контролировать это.
  4. Отсутствие проверки на ошибки в драйвере, для ускорения работы.

Исходя из того, что новое API появилось в наши дни и на протяжении 18 месяцев Khronos Group его разрабатывала в тесном контакте с ведущими IT компаниями мира, можно делать вывод, что это API должно лучше подойти для современных 3D приложений.

Ниже вы можете увидеть схему работы Vulkan:

Будет ли Vulkan на Mac OS X?

После того как спецификация Vulkan была опубликована, найти драйвера для современных видеокарт не составляет труда. Но это только для Windows и Linux. Так как вулкан это только кроссплатформенный API, который не требует особой поддержки со стороны видеокарт, обновив драйвер, вы можете его начать использовать (если конечно ваша видеокарта в списке поддерживаемых).

Для Mac OS X всё намного сложнее. В El Capitan поддержки Vulkan нет, хотелось бы ждать в следующих версиях, однако есть одно "но". Apple в El Capitan добавила поддержку своего API - Metal. Раньше он использовался только для устройств на iOS. Исходя из этого, а также учитывая тот факт, что Apple привыкло контролировать всё, что касается их устройств, можно сделать вывод, что Vulkan может и не появиться на Mac OS X.

Что дальше?

По моему мнению, что ждёт Vulkan во многом зависит от того, насколько активно его начнут использовать разработчики и поддерживать производители видеокарт. Если развитие OpenGL на этом остановится, то для новых приложений выбора не будет и их придётся разрабатывать на Vulkan. Но существуют тысячи приложений на OpenGL, которые никто так сразу не ринется переписывать на Vulkan. Ещё и вопрос с Mac OS X не ясен, так как это очень распространённая система в США. Если для Mac OS X будет Metal, под Windows - DirectX, а под Linux Vulkan, то Vulkan никак не облегчит разработку кроссплатформенных приложений.

Это вообще разные вещи.
Нужно отличать изучение API , от изучения технологии . Если вы хотите выучить просто API, учите что угодно, ибо разницу заметите только, когда поймёте основы, базу .

OpenGL проектировался когда были другие архитектуры железа. Мультипроцессорность была только в теории, и считалась уделом суперкомпьютеров и ненужной для пользовательских ПК.
Можно привести аналогию: OpenGL == C++, Vulkan == асинхронный Assembler + hardware threads. Например, в C++ сейчас довольно много архитектурных косяков, которые пытаются решить новыми стандартами, объявляют какие вещи устаревшими, потому что они концептуально неверны и не подходят под современные реалии.
Но, при этом, вы можете всё то же самое написать на ассемблере, но нужно намного лучше понимать, как работает процессор и ОС, самому писать примитивы синхронизации, и т. п.

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

В итоге, я бы ответил так:

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

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

Если хотите писать игры не мирового класса, то учите готовые движки, Unity или Unreal. Они уже поддерживают за вас Vulkan, продумали за вас API и архитектуру.

На минувшей неделе был представлен 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.

Тест The Talos Principle - 1.280 x 720 пикселей

Тест The Talos Principle - 2.560 x 1.440 пикселей

Тест The Talos Principle - 3.840 x 2.160 пикселей

Как можно видеть по результатам, 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 может сыграть важную роль. В любом случае, следует дождаться реакции со стороны разработчиков игр, иначе мы получаем проблему курицы и яйца, из которой сложно выйти.

Опубликованно 06.11.2018 12:25

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

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

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

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

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

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

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

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

Прежде чем говорить о деталях и тонкостях Vulkan API, думаю нужно сказать несколько слов о том, что же это такое и с чем его едят. Если сравнивать Linux с Windows, то Vulkan(который, все еще находится в разработке) это Directx, набор библиотек, для улучшения быстродействия в основном в компьютерных играх. Как известно, на платформе Linux, можно запускать игры с помощью , PlayOnLinux или коммерческой версии . Но не все игрушки запустятся и будут работать как следует, а все из-за проклятого API Directx.

Забыл сказать, что для производительности в играх для.nix платформ используется OpenGL, аналогичное программное обеспечение, как Directx для Windows. Так вот, Vulkan API, как сообщают разработчики из компании Nvidia (которые, в свою очередь, так же заинтересованы в реализации этого проекта) Vulkan API, будет дополняться устаревшим OpenGL. В свою очередь, это означает, что менее ресурсозатратные объекты, будут обрабатываться именно с помощью OpenGL, а когда приходит время , то тут в дело будет вступать новый проект.

Преимущество Vulkan API

Почему же этот проект, поддерживают, очень солидные компании, среди которых, Intel, AMD, Nvidia и др. В чем же прелесть, нового API? Здесь нужно показать видео, которое наглядно покажет, что же он из себя представляет на практике...

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

Перспективы развития Vulkan API

К сожалению, точная дата выхода, пока неизвестна, также держатся в секрете какие, игры, получат поддержку нового API. В свою очередь, компания AMD (которая сейчас очень активно сотрудничает с разработчиками) намекнула, что они работают над новой игрой, которая будет использовать Vulkan API, либо какая-то игра будет портирована.

Забыл упомянуть, что новый проект будет кроссплатформенным и даже Android, будет работать с ним.

Дальнейшие новости о проекте Vulkan API, будут известны с 14 по 18 марта, во время конференции The Game Developers Conference (GDC).

Все мысли по поводу Вулкана, оставляем в комментариях. Очень интересно узнать, станет ли Linux, игровой платформой или же Windows, снова придумает, что-нибудь сверхъестественное.

Перевод, комментарии: alfabuster, специально для сайта

Статьи по теме: