DirectX — набор API от Microsoft¶
DirectX — семейство программных интерфейсов (API) и технологий, разрабатываемых корпорацией Microsoft для работы с мультимедийными и игровыми задачами в операционных системах Windows и Xbox. Основное назначение DirectX — обеспечить приложениям, прежде всего компьютерным играм, прямой доступ к аппаратным ресурсам компьютера (видеокарте, звуковой карте, вводу, сети) с минимальными накладными расходами, что повышает производительность и позволяет унифицировать работу с разным оборудованием.
¶История
Первая версия DirectX появилась в 1995 году вместе с выходом Windows 95. До её появления игры под MS-DOS работали напрямую с оборудованием, минуя операционную систему, что давало высокую производительность, но требовало от разработчиков написания отдельных драйверов под каждую видеокарту. С переходом на Windows приложения были вынуждены работать через слой абстракции операционной системы, что снижало быстродействие и мешало распространению игр на Windows.
Microsoft создала DirectX как ответ на технологию Glide и OpenGL, которые активно использовались в играх. Ключевая идея заключалась в том, чтобы предоставить разработчикам единый набор вызовов, работающих с любым совместимым оборудованием через соответствующие драйверы. В 1996 году вышла вторая версия, а в 1997-м — третья, закрепившая DirectX как стандарт игровой разработки на платформе Windows.
В дальнейшем версии DirectX выходили примерно ежегодно: DirectX 7 (2000) добавил поддержку аппаратного преобразования вершин, DirectX 8 (2000) представил шейдеры вершин и пикселей, DirectX 9 (2002) внедрил язык шейдеров Shader Model 3.0. DirectX 10 (2006) стал эксклюзивным для Windows Vista, а DirectX 11 (2009) добавил тесселяцию и многопоточную обработку. DirectX 12 (2015) предоставил разработчикам более низкоуровневый доступ к GPU, сократив накладные расходы драйвера.
¶Состав
DirectX — это не единая библиотека, а набор компонентов, каждый из которых отвечает за свою область:
| Компонент | Назначение |
|---|---|
| Direct3D | Трёхмерная графика, рендеринг |
| DirectDraw | Двумерная графика (устарел, заменён Direct3D) |
| DirectSound | Воспроизведение и микширование звука |
| DirectMusic | Синтез музыки и динамических звуковых дорожек |
| DirectInput | Обработка ввода с клавиатуры, мыши, джойстиков (устарел) |
| DirectPlay | Сетевое взаимодействие игроков (устарел) |
| DirectVideo | Воспроизведение видео (устарел) |
| XAudio2 | Современный аудиоAPI, замена DirectSound |
| XInput | Поддержка геймпадов Xbox |
| DirectX Graphics Infrastructure (DXGI) | Управление цепочками обмена, полноэкранный режим, переключение адаптеров |
Наибольшее значение имеет Direct3D — именно он отвечает за вывод трёхмерной графики и является ядром игрового рендеринга в Windows. Остальные компоненты либо устарели, либо были вынесены в отдельные библиотеки.
¶Принцип работы
Приложение вызывает функции DirectX, которые передают команды в драйвер видеокарты, а тот — в графический процессор. Слой API скрывает различия между моделями GPU разных производителей (NVIDIA, AMD, Intel), предоставляя разработчику унифицированный интерфейс. При этом DirectX поддерживает механизм «аппаратных уровней» (feature levels), позволяющий одной и той же программе работать на старом и новом оборудовании с разным набором возможностей.
¶DirectX и альтернативы
Главные конкуренты DirectX на рынке графических API — это OpenGL (открытый стандарт, поддерживаемый консорциумом Khronos Group) и Vulkan (его преемник, также от Khronos). На платформах Apple используется Metal, на консолях PlayStation — собственные API Sony. Кроссплатформенные движки (Unity, Unreal Engine) обычно используют DirectX под Windows, Metal под macOS/iOS и Vulkan или OpenGL под Linux и Android.
В отличие от DirectX, который является закрытым продуктом Microsoft и работает только в экосистеме Windows и Xbox, Vulkan и OpenGL доступны на разных операционных системах. Вместе с тем DirectX остаётся доминирующим API в играх под Windows благодаря тесной интеграции с системой и поддержке со стороны большинства производителей игр.
¶DirectX Ultimate и DirectX Raytracing
В 2018 году Microsoft представила пакет DirectX 12 Ultimate, объединивший технологии аппаратного трассировки лучей (DirectX Raytracing, DXR), переменной частоты кадров (Variable Rate Shading), меш-шейдеры (Mesh Shaders) и обратную связь (Sampler Feedback). Эти технологии поддерживаются на видеокартах NVIDIA RTX, AMD RX 6000 и новее.
¶Значение
DirectX стал фактическим стандартом игровой разработки на платформе Windows. Подавляющее большинство компьютерных игр для Windows используют Direct3D в качестве основного графического API. Технологии, впервые появившиеся в DirectX, часто становятся отраслевыми стандартами: так, шейдерная модель, введённая в DirectX 8, была адаптирована в OpenGL, а концепция низкоуровневого доступа к GPU из DirectX 12 повлияла на дизайн Vulkan.
История развития DirectX тесно связана с историей компьютерных игр: каждая новая версия API открывала разработчикам новые графические возможности, а выпуск новых игр стимулировал обновление API и драйверов.
История компьютерных игр, DirectX SDK, Microsoft Docs — DirectX Graphics, Khronos Group — Vulkan Specification, «Game Engine Architecture» Джейсона Грегори.
