Сравнение библиотек OpenGL и Vulkan: что выбрать

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

Что такое OpenGL

Открытый графический стандарт презентован промышленным консорциумом Khronos, куда входят Intel, Dell, AMD, Samsung, Nvidia и ~90 других крупных IT-компаний. В библиотеку фреймворка включено свыше 300 функций, которые упростят разработчику рисование трёхмерных объектов посредством простейших примитивов. При этом параллельно задействуются вычислительные возможности графического адаптера и центрального процессора. Работа OpenGL базируется на создании параллелизма между инструкциями и данными. Фреймворк бесплатен даже для коммерческой эксплуатации.

В основе OpenGL лежит принцип составления сложных трёхмерных изображений при помощи векторных примитивов: точки, линии, треугольники, которые подвергаются обработке CPU и GPU с дальнейшим созданием кадра изображения в памяти компьютера с его выводом на дисплей. Этим занимается графический конвейер. У OpenGL две основные задачи – избавиться от:

  • связанных с трудностями адаптации видеокарт, предоставляя разработчику общий API;
  • разницы в возможностях аппаратных платформ.

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

Что такое Vulkan

API Вулкан – инновационный графический интерфейс для работы с двух- и трёхмерной графикой, разработанный в 2015 году той же группой компаний Khronos. По сути, является усовершенствованием OpenGL. Его применяют для разработки высокопроизводительных приложений, которые потребляют минимум ресурсов процессора. Он предлагает общий для всех платформ API, работающий на Андроид, Linux, Windows, Mac, iOS, BSD.

Близость современных GPU по архитектуре позволяет уйти от различных спецификаций, что позволяет разработчикам использовать стандартные инструменты проверки кода, его отладки, тестирования, профилирования. Шейдеры, созданные посредством формата SPIR-V, ускоряют выполнение кода.

Сравнение

Начнём из дат.

OpenGL – устаревший API, который используется повсеместно.

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

Трассировка лучей.

OpenGL содержит примитивную модель расчёта тона точек на поверхности при этом учитывается характеристики материала, геометрия его поверхности, взаимное расположения источников освещения, их параметры. При этом рассматривают только одно отражение лучей.

Vulkan в 2018 обзавёлся усовершенствованным движком трассировки, который применяют для создания фотореалистичных видеоигр и спецэффектов. Он поддерживает асинхронные вычисления, содержит библиотеки для ускорения расчётов на видеокартах от Nvidia и AMD.

Производительность:

Vulkan практически не отличается в потреблении ресурсов при отрисовке простых сцен, но когда количество и сложность объектов в кадре растёт, этот API демонстрирует свои преимущества.

  • Эффективнее задействует многоядерные процессоры, в частности, четырёхъядерные кристаллы.
  • Нагрузку на каждое ядро более-менее одинаковая. OpenGL грузит преимущественно одно, нагрузка на второе обычно небольшая, остальные простаивают.
  • При обработке одинаковых сцен Вулкан демонстрирует большее количество FPS.

Чем сложнее сцена, тем больше разница между производительностью API Vulkan и OpenGL.

Преимущества Vulkan:

  • Вместо использования высокоуровневых языков программирования в Вулкан применяют формат SPIR-V – позволяет описывать их на любом ЯП.
  • API поддерживается всеми устройствами от смартфонов до профессиональных видеокарт.
  • Задействует больше ядер, имеет улучшенную многоядерную поддержку.
  • Снижает нагрузку на процессор, чем повышает пропускную способность при визуализации и проведении вычислений.
  • Программист сам управляет распределением памяти.
  • В OpenGL параметры pipeline – это масштабная машина состояний, которую нужно настраивать; в Vulkan это делается в отдельных объектах, при этом он содержит ускоряющие их создание пайплайны.
  • Есть объект renderpass, упрощающий обработку графики мобильными GPU, частично оптимизирует её на видеокартах AMD.
  • Отличается большей производительностью, требует меньше вычислительных мощностей на расчёт и визуализацию сцен.

Как включить

Существуют разные способы запустить игру на нужном вам движке. В CS: GO, например, есть отдельный ярлык для вызова шутера на Vulkan. Также в настройках видеокарт Nvidia можете указать предпочитаемый API. Откройте свойства драйвера, посетите раздел «Параметры 3D» – «Управление…».

Измените значение опции «Метод представления» на одно из следующих:

  • Авто – драйвер сам определяет метод ОС/API либо DXGI;
  • Использовать цепочку буферов – обеспечивает повышенную совместимость.
  • Собственный – снижает расход памяти, увеличивает производительность.«Метод представления»

Настройки сохраняются автоматически.

Оцените статью
OpenGL
Добавить комментарии

Нажимая на кнопку "Отправить комментарий", я и принимаю политику конфиденциальности.