Перейти до вмісту

DirectX

Очікує на перевірку
Матеріал з Вікіпедії — вільної енциклопедії.
DirectX
Типфреймворк застосунок
РозробникMicrosoft
Стабільний випуск12 Ultimate API (10 листопада 2020; 5 років тому (2020-11-10))
Операційна системаMicrosoft Windows
Мова програмуванняHLSL і C++ Редагувати інформацію у Вікіданих
ЛіцензіяEULA
Онлайн-документаціяlearn.microsoft.com/en-us/windows/win32/directx Редагувати інформацію у Вікіданих
Репозиторійgithub.com/microsoft/DirectX-Headers
ВебсайтDirectX

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.[1] DirectX 12 Ultimate відповідає рівню можливостей (feature level) 12_2 і доступний починаючи з Windows 10 версії 2004.[2]

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 [Архівовано 2 вересня 2008 у Wayback Machine.]). Хоча як приклад роботи, запускається і відмінно працює 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.0810
4.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 [Архівовано 19 березня 2014 у Wayback Machine.], 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[1][2] 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, шейдинг зі змінною частотою, мешшейдери та зворотний зв'язок семплера.[1] Ці можливості вперше стали доступними в оновленні Windows 10 версії 2004 (травень 2020 року) разом із моделлю шейдерів HLSL 6.5.[2]

У 2021 році Microsoft запровадила DirectX 12 Agility SDK: середовище виконання Direct3D 12 було розділене на невеликий завантажувач D3D12.dll у складі операційної системи та власне ядро D3D12Core.dll, яке розробник може постачати разом із грою. Завдяки цьому нові можливості DirectX 12 стають доступними незалежно від циклу оновлень Windows.[3]

У 2022 році з'явилася технологія DirectStorage, яка прискорює завантаження ігрових світів, переносячи розпакування даних на графічний процесор.[4]

У березні 2024 року Microsoft додала до Direct3D 12 робочі графи (work graphs) — механізм, за якого шейдер може самостійно запускати виконання іншої роботи на графічному процесорі без участі центрального процесора. Для їх використання потрібні Agility SDK версії 1.613 або новішої та модель шейдерів 6.8.[5] Того ж року було представлено автоматичне підвищення роздільності Automatic Super Resolution (AutoSR).[4]

Станом на 2025 рік Microsoft розвивала DirectX 12 у напрямі апаратно прискореного трасування шляхів і машинного навчання: з'явилися попередня підтримка карт непрозорості (opacity micromaps), перевпорядкування виконання шейдерів (shader execution reordering), прискорена доставка шейдерів (advanced shader delivery) та експериментальна підтримка кооперативних векторів (cooperative vectors).[4]

Пов'язані технології

[ред. | ред. код]

XNA — інший інструмент розробки від Microsoft, що спрощує розробку ігрових і мультимедіа-застосунків, надає зручний шлях інтеграції з DirectX, HLSL і іншими інструментами, зібраними в єдину систему.

Починаючи з 2002 року, Microsoft випускає версії DirectX, сумісні з Microsoft .NET. Це дозволяє використовувати всі переваги керованих мов (C# або Visual Basic .Net) при розробці застосунків, які використовують DirectX. Цей API відомий як «Managed DirectX». Заявлена продуктивність — 98 % від звичайної, некерованої версії.

Х файли

[ред. | ред. код]

Х файлами називають файли з розширенням .x що можуть містити меші, текстури, анімації та інші об'єкти задані користувачем. Підтримуються також ієрархії об'єктів та інстансинг[en] (багаторазові посилання на об'єкт замість збереження його копій. Вперше з'явилися у DirectX 2.0. З DirectX 3.0 була випущена також двійкова версія формату.[6]

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. 1 2 3 Shawn Hargreaves (19 березня 2020). Announcing DirectX 12 Ultimate. DirectX Developer Blog (англ.). Microsoft. Процитовано 3 серпня 2026.
  2. 1 2 3 What's new in Direct3D 12. Microsoft Learn (англ.). Microsoft. 14 травня 2025. Процитовано 3 серпня 2026.
  3. Jacques van Rhyn (20 квітня 2021). DirectX 12 Agility SDK: Getting Started. DirectX Developer Blog (англ.). Microsoft. Процитовано 3 серпня 2026.
  4. 1 2 3 Stefan Bojanic (17 грудня 2025). Celebrating 10 Years of DirectX 12. DirectX Developer Blog (англ.). Microsoft. Процитовано 3 серпня 2026.
  5. D3D12 Work Graphs. DirectX Developer Blog (англ.). Microsoft. 11 березня 2024. Процитовано 3 серпня 2026.
  6. X Files (Legacy) (Direct3D 9) - Win32 apps. learn.microsoft.com (амер.). 6 січня 2021. Процитовано 26 березня 2024.

Посилання

[ред. | ред. код]

Інформація і ресурси для розробників

[ред. | ред. код]