DirectX, Vulkan и OpenGL – отчасти конкурирующие программируемые графическиe интерфейсы. С одной стороны, они делают общее дело, с иной – технологии абсолютно разные. Сравнение двух первых API мы делали в статье, сегодня рассмотрим, чем различаются DirectX 11 и OpenGL.
Кратко об API
DirectX – разработка Microsoft для платформ Windows и Xbox, хотя API можно эмулировать через Wine в Linux. Увы, его не поддерживает даже Mac OS. Распространяется с закрытыми исходниками, разработчику предлагает написание кода на C++. До 12-й версии Директ Икс нужно было скачивать и устанавливать отдельно, однако Windows 10 и 11 поставляются с предустановленным DX 12. Основнач сфера применения – виртуальные развлечения: кино, игры.
OpenGL – свободный проект организации Khronos Group, на создание которого повлияли десятки IT-гигантов. Это двух- и трёхмерный API для работы с компьютерной графикой, включая сетевое взаимодействие. Применяется в бизнесе, научной, исследовательской деятельности и государственными структурами: энергетическая отрасль, виртуальная реальность, САПР. Игры – не его конёк. В отличие от DX, его нужно скачивать и устанавливаться вручную.
На OpenGL делают игры, особенно инди и платформеры, но до ума доведены единицы.
Открытость исходного кода OpenGL позволяет производителям оборудования и ОС создавать заточенные / оптимизированные под разные задачи релизы API.
Оба графических интерфейса реализованы на уровне драйвера устройства (видеокарты).
Отличия в подходе
Разница между рассматриваемыми графическими интерфейсами огромна.
DirectX 11 не совместим с более ранними версиями. Для переноса игры программисту придётся изрядно переработать код либо написать.
Программа на DirectX – это классы исключительно на C++, в OpenGL – это функции языке C. Наличие стандартизированного ABI (стандартизированного бинарного интерфейса) позволяет API работать с любым языком программирования, способным вызывать функции native-библиотек.
Назначение
До 2010-го года профессиональные видеокарты работали только с OpenGL благодаря его производительности, но ситуация менялась. Он предлагает 3D API, ориентированный на весь спектр графических устройств, что позволяет реализовывать визуализации в научной, исследовательской, инженерной деятельности.
DirectX – набор интерфейсов для высокопроизводительного доступа к графическому оборудованию (видеокартам или -процессорам), созданный для игр – это узкоспециализированный API. В этом нет равных, разве Vulkan начинает наступать на пятки.
Сейчас же оба API в плане функциональности частично перекрывают друг друга. DX используют в Windows, его конкурента – на остальных платформах.
Расширения
В OpenGL большинство функций реализовывается посредством расширений. Это позволяет добавлять необходимые возможности разработчику игр, а создателям API – обновлять их. При появлении новых фичей в видеокартах ребята из Khronos Group сразу реализуют их в своём драйвере и документируют это. Важные дополнения со временем становятся обязательным компонентом API.
DirectX в этом плане отличается. Обновляют его полностью, выпуская новые версии, что бывает раз в 3 – 5 лет. В пределах одной редакции возможности API от Microsoft не меняется. Из новых версий удаляют малоиспользуемые и устаревшие модули.
OpenGL обновляется чаще детища Microsoft.
Простота освоения, эксплуатации
Direct3D – сложный в освоении и работе графический API даже после ряда упрощений, но работать с ним можно только на C++. Конкурент позволяет реализовывать проекты на C, Python, Java, C++.
Что касается изучения, специалисты рекомендуют начинать из DX – Майкрософт предоставляет великолепный SDK и документацию. У проекта Khronos SDK нет. Документация неплохая, но работать придётся с нуля.
Хотя в ряде вузов студентам сразу преподают OpenGL благодаря отлично упорядоченному коду с развёрнутыми комментариями, с чем у Microsoft всегда была беда. Они такого наворотят, что без академического образования разберётся не каждый.
OpenGL – открытый API для профессиональной работы с двух- и трёхмерной графикой: САПР, моделирование. Он поддерживает аппаратное ускорение, но оно не обязательно. Устанавливается отдельно – можно бесплатно скачать с официального сайта.
DirectX больше ориентирован на компьютерные игры, поэтому сравнивать интерфейсы тяжело. Он создавался с уклоном на ускорение на видеокарту, поставляется с Windows.