DirectX — це набір API функцій, розроблених для простого і ефективного вирішення завдань, пов'язаних з ігровим і відеопрограмуванням під ОС Microsoft Windows. Найширше використовується при написанні відеоігор. Пакет засобів розробки DirectX від Microsoft безкоштовно доступний на сайті Microsoft. Незважаючи на те, що зараз DirectX включений в стандартний набір ПЗ Windows, свіжі версії DirectX часто поставляються разом з іграми. Це пов'язано з регулярним оновленням API, і версія, включена в ОС Windows часто є не останньою. Найновішою версією є DirectX 12. У березні 2020 року Microsoft представила набір можливостей DirectX 12 Ultimate, що об'єднує трасування променів DirectX Raytracing 1.1, шейдинг зі змінною частотою (variable rate shading), мешшейдери та зворотний зв'язок семплера (sampler feedback) і підтримується як на ПК з Windows, так і на консолях Xbox Series X та Series S. DirectX 12 Ultimate відповідає рівню можливостей (feature level) 12_2 і доступний починаючи з Windows 10 версії 2004.
DirectX API
Практично всі частини DirectX API є набори COM-сумісних об'єктів.
В цілому, DirectX підрозділяється на: DirectX Graphics, набір інтерфейсів, що раніше (до версії 8.0) ділилися на: DirectDraw: інтерфейс виведення растрової графіки. Direct3D (D3D): інтерфейс виведення тривимірних примітивів. DirectInput: інтерфейс для обробки даних, що поступають з клавіатури, миші, джойстика тощо ігрових контролерів. DirectPlay: інтерфейс мережевої комунікації ігор. DirectSound: інтерфейс низькорівневої роботи зі звуком (формату Wave). DirectMusic: інтерфейс відтворення музики у форматах Microsoft. DirectShow: інтерфейс для вводу/виводу аудіо- і/або відео- даних. DirectShow містить DirectX plugin для обробки аудіо сигналу і DirectX Video Acceleration для прискорення відтворення відео. DirectSetup: частина, відповідальна за установку DirectX. DirectX Media Objects: реалізує функціональну підтримку потокових об'єктів (наприклад, енкодери/декодери).
Історія Від початку націлений на розробку відеоігор, DirectX став популярний і в інших областях розробки програмного забезпечення. Наприклад, DirectX, разом з OpenGL, набув дуже широкого поширення в інженерному/математичному ПЗ.
У 1994 році Microsoft був практично готовий випустити наступну версію Windows — Windows 95. Головним чинником, що визначає наскільки популярною буде нова ОС, був набір програм, які можна буде запускати під її управлінням. У Microsoft прийшли до висновку, що, поки розробники бачать DOS відповіднішою для написання ігрових застосунків, комерційний успіх нової ОС вельми сумнівний.
DOS дозволяла розробникові дістати прямий доступ до відеокарти, клавіатури/миші/джойстика і інших частин системи, тоді як Windows 95, з її захищеною моделлю пам'яті, надавала більш стандартизований, але водночас вельми обмежений доступ до пристроїв. Microsoft потребував нового способу дати розробникові все, що йому необхідне. Eisler, St. John, and Engstrom вирішили цю проблему, назвавши саме рішення «DirectX».
Перший реліз DirectX був випущений у вересні 1995 року, під назвою «Windows Game SDK».
Ще до появи DirectX, Microsoft включила OpenGL в ОС Windows NT. Direct3D позиціонувався як заміна OpenGL в ігровій сфері. Звідси бере свій початок «священна війна» між прихильниками крос-платформової OpenGL і доступною лише в Windows Direct3D. Решта частин DirectX часто комбінується з графікою OpenGL у відеоіграх, оскільки OpenGL є лише графічним API і не має аналогів до інших можливостей DirectX (наприклад, доступ до клавіатури/джойстика/миші, підтримка звуку, гри у мережі тощо).
DirectX є базою для Xbox API. Xbox API схожий з DirectX 8.1, але оновлення версії, як і на інших консолях, неможливе.
У 2002 році, Microsoft випустив DirectX 9 з покращеною і розширеною підтримкою шейдерів. З 2002 року DirectX неодноразово оновлювався. У серпні 2004 року в DirectX була додана підтримка шейдерів версії 3.0 (DirectX 9.0c).
У квітні 2005 інтерфейс DirectShow був переміщений в Microsoft Platform SDK.
З січня 2008 в Інтернеті відкрився проект присвячений розробці DirectX10 для Windows XP і по теперішній час на нім ведеться редагування і оптимізація DLL файлів DX10 для їх сумісності з Windows XP. Проте помітного результату це не дало (докладне пояснення див. Знайомимся з DirectX 10 ). Хоча як приклад роботи, запускається і відмінно працює Crysis з імітацією ефектів DX10, а так само зросла продуктивність в бенчмарках і деяких іграх.
Хронологія версій DirectX Версія DirectX Номер версії Операційна система Дата релізу DirectX 1.0 4.02.0095 Windows 95a 30 вересня 1995 DirectX 2.0 / 2.0a 4.03.00.1096 Windows 95 OSR 2 и Windows NT молодші 4.0 5 червня 1996 DirectX 3.0 / 3.0a 4.04.0068 / 69 Windows 95 OSR 2.5 и Windows NT 4.0 SP3 остання підтримувана версія DirectX для Windows NT 4.0 15 вересня 1996 DirectX 4.0< не випущений
DirectX 5.0 4.05.00.0155 (RC55) Доступний як бета для Windows NT 4.0 16 липня 1997 DirectX 5.0 4.05.01.1721 / 1998 Windows 98 5 травня 1998 DirectX 6.0 4.06.00.0318 (RC3) Windows 98 SEостання підтримувана версія DirectX Media для Windows NT 4.0 а також він був в Dreamcast 7 серпня 1998 DirectX 6.1 4.06.02.0436 (RC0) Windows 95/98/98SE 3 лютого 1999 DirectX 7.0 4.07.00.0700 (RC1) Windows 2000 и Windows ME 22 вересня 1999 DirectX 7.0a 4.07.00.0716 (RC1) Windows 95/98/98SE/2000 1999 DirectX 8.0 4.08.00.0400 (RC10) Windows 95/98/98SE/ME/2000 30 вересня 2000 DirectX 8.0a 4.08.00.0400 (RC14) остання підтримувана версія DirectX для Windows 95 7 листопада 2000 DirectX 8.1 4.08.01.08104.08.01.0881 (RC7) Windows XP 12 листопада 2001 DirectX 8.1b 4.08.01.0901
2002 DirectX 8.2 4.08.02.0134 (4.09.0000.0134)
2002 DirectX 9.0 4.09.0000.0900 Windows Server 2003 24 грудня 2002 DirectX 9.0a 4.09.0000.0901
26 травня 2003 DirectX 9.0b 4.09.0000.0902 (RC2)
13 серпня 2003 DirectX 9.0c 4.09.0000.0904 (RC0) Windows XP SP2остання підтримувана версія DirectX для Windows 98SE і Windows Me 9 серпня 2004 DirectX 9.0c 4.09.0000.0904 Xbox 360Сумісний зі всіма версіями ОС Windows, з якими сумісний 9.0c(RC0) 9 грудня 2005 DirectX 9.0L (включений в поставку Windows Vista) 4.09.0000.0905 (?) Надає додаткові інтерфейси IDirect3D9Ex та IDirect3DDevice9Ex з функціональністю, яка доступна лише через LDDM-драйвери ОС Windows Vista. DirectX 10 (включений в поставку Windows Vista) 6.0.6000.16386 Перша версія для Windows Vista. Інформація по Direct3D 10 10 листопада 2006 DirectX 10.1 6.00.6001.18000 Service Pack 1 для Windows Vista, Windows Server 2008 4 лютого 2008 DirectX 11 (включений в поставку Windows 7) 6.01.7600.16385 Windows Vista Service Pack 2, Windows 7, Windows Server 2008 R2 Офіційний анонс відбувся на Gamefest 2008. Інформація по Direct3D 11 22 липня 2009 DirectX 11.1 (включений в поставку Windows 8) 6.02.9200.16384 Ручне оновлення для Windows 7 Service Pack 1 , Windows 8, Windows RT і Windows Server 2012 26 жовтня 2012 DirectX 11.2 (включений в поставку Windows 8.1) 6.03.9600.16384 Windows 8.1, Windows RT 8.1 і Windows Server 2012 R2 21 серпня 2013 DirectX 12 (включений в поставку Windows 10) 10.00.10240.16384 Windows 10, Xbox One 29 липня 2015 DirectX 12 Ultimate (рівень можливостей 12_2)
Windows 10 версії 2004 і новіші, Windows 11, Xbox Series X та Series S 19 березня 2020
Сумісність Багато сучасних пристроїв мають тільки DirectX-сумісні драйвери, іншими словами, користувач повинен встановити DirectX для використання всіх можливостей пристрою. У цей час система оновлення драйверів Windows Update дозволяє завантажувати тільки необхідні бібліотеки, а не весь драйвер цілком.
DirectX зворотно сумісний з попередніми версіями. Якщо застосунок або гра використовує DirectX 6.0, вони працюватимуть і при встановленому DirectX 9.0. Кожна подальша версія DirectX включає всі попередні.
Підтримувані операційні системи: Windows 98, Windows 98 Second Edition; Windows 2000, Windows 2000 Advanced Server, Windows 2000 Professional Edition, Windows 2000 Server, Windows 2000 Service Pack 2, Windows 2000 Service Pack 3, Windows 2000 Service Pack 4; Windows Server 2003, Windows Server 2003 Service Pack 1, Windows Server 2003 Datacenter x64 Edition, Windows Server 2003 Enterprise x64 Edition, Windows Server 2003 Standard x64 Edition, Windows Small Business Server 2003; Windows XP, Windows XP 64-bit, Windows XP Home Edition, Windows XP Media Center Edition, Windows XP Professional Edition, Windows XP Service Pack 1, Windows XP Service Pack 2, Windows XP Starter Edition, Windows XP Tablet PC Edition; Windows Vista. Windows 7, Windows 7 Service Pack 1 Windows 8, Windows 8.1 Windows 10
Розвиток після виходу DirectX 12 DirectX 12 був представлений 20 березня 2014 року на Game Developers Conference в Сан-Франциско (США).
У березні 2020 року Microsoft оголосила про DirectX 12 Ultimate — спільний для ПК і консолей Xbox Series X та Series S набір апаратних можливостей, до якого увійшли трасування променів DirectX Raytracing версії 1.1, шейдинг зі змінною частотою, мешшейдери та зворотний зв'язок семплера. Ці можливості вперше стали доступними в оновленні Windows 10 версії 2004 (травень 2020 року) разом із моделлю шейдерів HLSL 6.5.
У 2021 році Microsoft запровадила DirectX 12 Agility SDK: середовище виконання Direct3D 12 було розділене на невеликий завантажувач D3D12.dll у складі операційної системи та власне ядро D3D12Core.dll, яке розробник може постачати разом із грою. Завдяки цьому нові можливості DirectX 12 стають доступними незалежно від циклу оновлень Windows.
У 2022 році з'явилася технологія DirectStorage, яка прискорює завантаження ігрових світів, переносячи розпакування даних на графічний процесор.
У березні 2024 року Microsoft додала до Direct3D 12 робочі графи (work graphs) — механізм, за якого шейдер може самостійно запускати виконання іншої роботи на графічному процесорі без участі центрального процесора. Для їх використання потрібні Agility SDK версії 1.613 або новішої та модель шейдерів 6.8. Того ж року було представлено автоматичне підвищення роздільності Automatic Super Resolution (AutoSR).
Станом на 2025 рік Microsoft розвивала DirectX 12 у напрямі апаратно прискореного трасування шляхів і машинного навчання: з'явилися попередня підтримка карт непрозорості (opacity micromaps), перевпорядкування виконання шейдерів (shader execution reordering), прискорена доставка шейдерів (advanced shader delivery) та експериментальна підтримка кооперативних векторів (cooperative vectors).
Пов'язані технології XNA — інший інструмент розробки від Microsoft, що спрощує розробку ігрових і мультимедіа-застосунків, надає зручний шлях інтеграції з DirectX, HLSL і іншими інструментами, зібраними в єдину систему.
Починаючи з 2002 року, Microsoft випускає версії DirectX, сумісні з Microsoft .NET. Це дозволяє використовувати всі переваги керованих мов (C# або Visual Basic .Net) при розробці застосунків, які використовують DirectX. Цей API відомий як «Managed DirectX». Заявлена продуктивність — 98 % від звичайної, некерованої версії.
Х файли
Х файлами називають файли з розширенням .x що можуть містити меші, текстури, анімації та інші об'єкти задані користувачем. Підтримуються також ієрархії об'єктів та (багаторазові посилання на об'єкт замість збереження його копій. Вперше з'явилися у DirectX 2.0. З DirectX 3.0 була випущена також двійкова версія формату.
Див. також GDI OpenGL DXVA Simple DirectMedia Layer
Примітки
Посилання Знакомимся с DirectX 10 Microsoft's DirectX site Microsoft's MSDN documentation & resource center for DirectX (для розробників) GameDev's FAQ on DirectX FAQ on XNA DirectX 10: история появления и новые возможности Анонсовано DirectX 12
Інформація і ресурси для розробників Gamedev.net's DirectX Articles section DirectX World — C++ DirectX 9 lessons for game programming. Learn how to build a graphic engine. Direct3D.net — Сайт Wolfgang Engel'а (Direct3D)