Добавить в корзинуПозвонить
Найти в Дзене
СтудияПК

Microsoft DirectX. Что это?

Microsoft DirectX — это не просто программный интерфейс (API), а целая система технологий, которая на протяжении почти трех десятилетий определяла облик индустрии компьютерных игр и мультимедиа на платформе Windows.
DirectX служит «переводчиком» между кодом игры и «железом» компьютера. Например, игра написана на языке программирования (C++ или на игровом движке), а видеокарта понимает только свои
Оглавление

Microsoft DirectX — это не просто программный интерфейс (API), а целая система технологий, которая на протяжении почти трех десятилетий определяла облик индустрии компьютерных игр и мультимедиа на платформе Windows.

DirectX служит «переводчиком» между кодом игры и «железом» компьютера. Например, игра написана на языке программирования (C++ или на игровом движке), а видеокарта понимает только свои специфические команды. DirectX (и его ключевой компонент Direct3D) берет на себя задачу преобразования команд игры в понятные для видеокарты инструкции, что позволяет отображать сложную 3D-графику и эффекты.

Архитектура и компоненты DirectX

Важно понимать, что DirectX — это не монолитная программа, а набор специальных программ(API):

Direct3D (D3D) — ядро системы, отвечающее за всю 3D-графику.

DXGI (DirectX Graphics Infrastructure) — обеспечивает взаимодействие между графическими API (например, Direct3D) и аппаратным обеспечением.

Direct2D / DirectWrite — современные интерфейсы для высокопроизводительного 2D-рендеринга и качественного отображения текста.

XAudio2 — современный звуковой движок, пришедший на смену устаревшему DirectSound.

XInput — стандартный API для работы с геймпадами Xbox.

DirectCompute — компонент для выполнения неграфических вычислений на GPU.

DirectX 1.0 (1995г.)

В середине 90-х годов Microsoft стояла перед серьезной проблемой. Новая операционная система Windows 95, призванная заменить MS-DOS, лишила разработчиков игр прямого доступа к аппаратному обеспечению. В DOS программисты могли напрямую обращаться к видеокарте и звуковой плате, что давало максимальную производительность. В Windows 95 это стало невозможно из-за защищенной модели памяти.

Ответом на этот вызов стал DirectX. Первая версия, выпущенная 30 сентября 1995 года как Windows Games SDK, была крайне простой. Она позволяла работать с двухмерной графикой (через DirectDraw), звуком (DirectSound) и устройствами ввода. Разработчики встретили новинку прохладно: они не доверяли Microsoft и опасались за будущее API. Тем не менее, это был первый шаг к единой системе разработки игр под Windows.

DirectX 2.0 – 6.0 (1996–1998гг.)

Развитие шло стремительно. DirectX 2.0 - 3.0 (1996г.) ввел в состав API пакет Direct3D для работы с 3D-графикой и DirectPlay для сетевых возможностей. Компоненты API стали более многообразны: DirectDraw (2D), Direct3D (3D), DirectInput (устройства), DirectSound (звук), DirectMusic (музыка).

Разработка четвертой и пятой версий велась параллельно, но интерес к DirectX 4.0 со стороны разработчиков игр оказался нулевым и он так и не вышел.

Чтобы избежать путаницы, компания сразу перешла к DirectX 5.0 (1997г.), который упростил программирование, но все еще не поддерживал мультитекстурирование (Мул-е).

Мул-е — это техника в компьютерной графике, при которой на одну текстуру (плоскую грань 3D-модели) одновременно накладывается сразу несколько разных текстур. Вместо одной картинки на поверхность проецируется сразу несколько изображений, а затем их цвета комбинируются определённым образом, чтобы получить итоговый вид изображения. Это позволяет добиться гораздо более сложного и реалистичного вида объекта, чем при использовании одной текстуры. 

Недостаток был Мул-я был исправлен в DirectX 6.0 (1998г.), который также сделал код еще более понятным. Однако в нем отсутствовала поддержка аппаратной обработки освещения и трансформации (T&L), что стало главным упущением перед выходом нового поколения видеокарт.

Версии 7.0 – 9.0c (1999–2004гг.)

DirectX 7.0 (1999г.) стал поворотным моментом. Он наконец-то получил поддержку аппаратного T&L, что позволило видеокартам (например, легендарной GeForce 256) брать на себя обработку геометрии сцены, разгрузив центральный процессор. Это было первое существенное технологическое преимущество DirectX над OpenGL.

Настоящий прорыв произошел с выходом DirectX 8.0 (2001г.). В сотрудничестве с NVIDIA Microsoft внедрила вершинные и пиксельные шейдеры (Shader Model 1.1). Это дало разработчикам невиданную ранее свободу в создании сложных визуальных эффектов и освещения.

DirectX 9.0 (2002г.) закрепил лидерство Microsoft. Он принес поддержку Shader Model 2.0 и языка высокого уровня HLSL, что сделало написание шейдеров доступным для широкого круга программистов. Версия 9.0c (2004г.) стала настоящим долгожителем, добавив поддержку Shader Model 3.0 и став стандартом для консоли Xbox 360. На этой версии было создано огромное количество хитов, и она оставалась актуальной долгие годы.

Версии 10 – 11.2 (2006–2013гг.)

Выпуск DirectX 10 (2006г.) был амбициозным, но обернулся провалом из-за привязки к Windows Vista. API был несовместим с Windows XP, что заставило большинство разработчиков продолжать использовать DX9 для охвата большей аудитории.

Появилась поддержка Shader Model 4.0, геометрические шейдеры, улучшенный HLSL. Однако игр с эксклюзивной поддержкой DX10 было мало.

Усвоив урок, Microsoft выпустила DirectX 11 (2009г.) уже с поддержкой Windows Vista и 7. Появилась тесселяция (динамическое усложнение геометрии), вычислительные шейдеры (Compute Shader) для задач общего назначения на GPU, улучшенная поддержка многоядерных процессоров.

Появились версии DirectX 11.1 (2012г.) для Windows 8 и DirectX 11.2 (2013г.) для Windows 8.1. Добавилась технология Tiled Resources. Она позволяла видеокарте использовать часть системной оперативной памяти для повышения детализации текстур. 

DirectX 12 - 12.2 (2015 – настоящее время)

Выход DirectX 12 в 2015 году вместе с Windows 10 стал революцией в подходе к программированию графики.

Главная концепция DX12 — "ближе к железу" (closer to the metal). Он предоставляет разработчикам прямой доступ к ресурсам GPU, минимизируя накладные расходы драйвера.API был полностью переработан для эффективного использования всех ядер центрального процессора при подготовке команд для GPU.

Введены объекты состояния конвейера (PSO) и таблицы дескрипторов для более гибкого управления ресурсами.

В 2018 году появился DirectX 12.1. Он включает консервативную растеризацию, которая улучшает процесс отсечения объектов и определения столкновений, для чёткой прорисовки кадра.

С 2020 года по сегодняшний день последней версией является DirectX 12.2 (Ultimate).

Эта версия включает такие технологии, как:

  • Raytracing (DXR). Аппаратно-ускоренная трассировка лучей для реалистичного освещения и теней.
  • Variable Rate Shading (VRS). Затенение с переменной скоростью для оптимизации производительности без потери качества.
  • Mesh Shaders. Новый тип шейдеров для более эффективной обработки сложной геометрии.
  • Sampler Feedback. Технология для более эффективного потокового текстурирования.

Таким образом, эволюция DirectX прошла путь от простых 2D-игр до фотореалистичных миров с трассировкой лучей в реальном времени.