a

30 лип. 2010 р.

DirectX

DirectX


Microsoft DirectX являє собою набір інтерфейс прикладного програмування з (API) для обробки завдань, пов'язаних з мультимедіа, особливо програмування ігор і відео, на платформах Microsoft. Спочатку, імена цих API, все почалося з Direct, Direct3D, таких як, DirectDraw, DirectMusic, DirectPlay, DirectSound, і так далі. Direct X ім'я було придумано як скорочення терміну для всіх цих API (X в постійній для конкретного імена API) і незабаром став назвою колекції. Коли Microsoft пізніше було вирішено розробити ігрову консоль, X була використана в якості основи для Xbox ім'я, щоб вказати, що консоль на основі технології DirectX. [1] X початковий був перенесений в називання API, призначений для Xbox, таких як XInput і багатоплатформовий звуковий Creation Tool (XACT), а модель DirectX була продовжена на Windows API, такі як Direct2D і DirectWrite.

Direct3D (3D Graphics API в DirectX) широко використовується у розробці відеоігор с для Microsoft Windows, Microsoft Xbox і Microsoft Xbox 360. Direct3D використовується також іншими додатками для візуалізації та графіки завдань, таких як CAD / CAM інженерних. Як Direct3D є найбільш широке поширення компонентів DirectX, то часто можна побачити імена "DirectX" і "Direct3D" використовуються як взаємозамінні.

Розробка програмного забезпечення DirectX (SDK), складається з бібліотеки в поширюваних в бінарній формі, разом з супровідною документацією та заголовки для використання в кодуванні. Спочатку, середовища виконання тільки встановлені гри або явно користувачем. Windows 95 не запускається з DirectX, але DirectX поставляється разом з Windows 95 OEM Service Release 2. [2] Windows 98 і Windows NT 4.0 і поставляється з DirectX, як всі версії Windows, випущені після виходу. SDK доступний для вільного скачування. Хоча середовища виконання, є власністю, із закритим вихідним кодом програмне забезпечення, вихідний код надається для більшості зразків SDK.

Direct3D 9Ex, Direct3D 10 і Direct3D 11 доступні тільки для Windows Vista і Windows 7, оскільки кожен з цих нових версій була побудована, щоб залежати від нової Windows Display Driver Model, який був представлений для Windows Vista. Нові Vista / WDDM графічна архітектура включає в себе новий менеджер відеопам'яті, яка підтримує віртуалізацію графічних пристроїв для декількох додатків і послуг, таких як Desktop Window Manager.

Історія


Наприкінці 1994 року Microsoft була на межі звільнення своєї наступної операційної системи, Windows 95. Головним чинником, який буде визначати вартість споживачі місце на їх нової операційної системи дуже відпочивав на тому, що програми будуть мати можливість запускати на ньому. Три співробітників Microsoft - Крейг Ейслер, Алекс Сент-Джон і Ерік Енгстрем - були стурбовані тим, що програмісти, як правило, щоб операційна система Microsoft в попередньому, MS-DOS, а кращою платформою для програмування ігор, то є кілька ігор будуть розроблені для Windows 95 і Операційна система не буде таким же про успіх.

DOS дозволяла розробникові дістати прямий доступ до відеокарти, клавіатури, мишки, звукові пристрої, а також всі інші частини системи, а Windows 95, з її захищеною моделлю пам'яті, обмежений доступ до всіх цих, працюючи на більш стандартизованої моделі. Microsoft потрібен був спосіб, який дозволить програмістам отримати те, що вони хочуть, і вони повинні це швидко, операційна система була лише кілька місяців від звільнення. Ейслер (розробка свинцю), Сент-Джон та Енгстрем (програми) працювали разом, щоб вирішити цю проблему, з якого вони в кінцевому підсумку імені DirectX.

Перша версія DirectX був випущений у вересні 1995 року в якості SDK Windows Ігри. Було Win32 заміну DCI [3] і крило інтерфейси для Windows 3.1. Простіше кажучи, DirectX дозволено всіма версіями Microsoft Windows, починаючи з Windows 95, щоб включити високопродуктивних мультимедійних. Ейслер писав про шалену гонці за створення DirectX з 1 по 5 в своєму блозі. [4]

DirectX 2,0 стало складовою частиною Windows себе релізи Windows 95 OSR2 і Windows NT 4.0 в середині 1996 року. У Windows 95 сама по собі ще молодо, і кілька ігор були випущені для нього, Microsoft, зайнятим на важких заохочення DirectX для розробників, які, як правило, довіряють здатності Microsoft по створенню платформи гри в Windows. Алекс Сент-Джон, працюючи євангеліст для DirectX, поставив складну події в 1996 році на комп'ютерній Game Developers Conference в яку гру розробник Джей Barnson описані в якості теми Roman, в тому числі з реальним лев, тоги, і щось на кшталт критий карнавал. [6] Саме в цьому випадку, якщо Microsoft представила першу Direct3D і DirectPlay, і продемонстрував багатокористувацької MechWarrior 2 грають через Інтернет.

Команда DirectX перед складним завданням тестування кожен реліз DirectX проти масиву апаратного та програмного забезпечення. Різні відеокарти, звукові карти, материнські плати, процесори, пристрої введення, ігор та інших мультимедійних додатків були протестовані з кожної бета-версії та фінальним релізом. Команда DirectX побудований і поширені тести, які дозволили метизної галузі щоб переконатися, що нові моделі обладнання і версії драйвера будуть сумісні з DirectX.

До DirectX, Microsoft включила OpenGL на платформі Windows NT. У той час, OpenGL потрібно "високого класу" апаратних і була присвячена інженерно-CAD використання. [7] Direct3D був призначений для легкого партнера для OpenGL, зосереджена на грі використання. Як 3D-ігор росли, розвивалися OpenGL включити поліпшену підтримку технології програмування інтерактивних мультимедійних програм, як ігри, надаючи розробникам вибір між використанням OpenGL і Direct3D як 3D Graphics API для їх застосування. У цей момент "битви" почали між прихильниками крос-платформенний OpenGL і тільки для Windows Direct3D. До речі, OpenGL було підтримано на Microsoft групою DirectX. Якщо розробник вирішив використовувати 3D-графіки OpenGL API, інших інтерфейсів DirectX із часто комбінується з графікою OpenGL в комп'ютерних іграх, тому що OpenGL не включає в себе всі функції в DirectX (наприклад, звук чи підтримку джойстика).

В консолі-версії, DirectX був використаний в якості основи для Xbox Microsoft в Xbox 360 і консолі API. API був розроблений спільно між Microsoft і Nvidia, який розробив користувальницький графічним апаратним забезпеченням використаний оригінальний Xbox. Xbox API схожа на DirectX версії 8,1, але не є оновлюваним, як і інші консолі технологій. Xbox був під кодовою назвою DirectXbox, але це був скорочений до Xbox його комерційна назва. [8]

У 2002 році Microsoft випустив DirectX 9 з підтримкою використання набагато більше шейдерних програм, ніж раніше в піксельних і вершинних шейдеров версії 2.0. Microsoft продовжує оновлювати пакет DirectX з тих пір, представляючи Shader Model 3.0 DirectX 9.0c, випущена в серпні 2004 року.

За станом на квітень 2005, DirectShow був знятий з DirectX і переїхав до Microsoft Platform SDK замість. DirectX SDK, однак, до сих пір, необхідних для побудови DirectShow зразків. [9]

Релізи

DirectX версії Номер версії Операційна система Дата виходу
DirectX 1,0 4.02.0095 30 вересня 1995
DirectX 2.0 Був відправлений тільки кілька третьої програми третіх сторін 1996
DirectX 2.0a 4.03.00.1096 Windows 95 OSR2 і NT 4,0 5 червня 1996
DirectX 3.0 4.04.00.0068 15 вересня 1996
4.04.00.0069 Пізніше пакет DirectX 3,0 включити Direct3D 4.04.00.0069 1996
DirectX 3.0a 4.04.00.0070 Windows NT 4.0 SP3 (і вище)
Остання підтримувана версія DirectX для Windows NT 4.0 Грудень 1996
DirectX 3.0b 4.04.00.0070 Це було дуже невелике оновлення для 3.0a, що фіксовані косметичної проблеми, пов'язаної з японською версією Windows 95 Грудень 1996
DirectX 4.0 Ніколи не розпочато
DirectX 5.0 4.05.00.0155 (RC55) Доступний як бета-версія для Windows NT 5.0, яка встановлюється на Windows NT 4.0 16 липня 1997
DirectX 5.2 4.05.01.1600 (RC00) DirectX 5,2 версія для Windows 95 5 травня 1998
4.05.01.1998 (RC0) Windows 98 ексклюзивних 25 червня 1998
DirectX 6,0 4.06.00.0318 (RC3) Windows CE, як реалізуються на Dreamcast 7 серпня 1998
DirectX 6.1 4.06.02.0436 (RC0) 3 лютого 1999
DirectX 6.1A 4.06.03.0518 (RC0) Windows 98 SE ексклюзивні 5 травня 1999
DirectX 7.0 4.07.00.0700 (RC1) 22 вересня 1999
4.07.00.0700 Windows 2000 17 лютого 2000
DirectX 7.0a 4.07.00.0716 (RC0) 8 березня 2000
4.07.00.0716 (RC1) 2000
DirectX 7.1 4.07.01.3000 (RC1) Windows Me ексклюзивні 14 вересня 2000
DirectX 8.0 4.08.00.0400 (RC10) 12 листопада 2000
DirectX 8.0a 4.08.00.0400 (RC14) Остання підтримувана версія для Windows 95 5 лютого 2001
DirectX 8.1 4.08.01.0810 Windows XP, Windows Server 2003 і Xbox ексклюзивні 25 жовтня 2001
4.08.01.0881 (RC7) Ця версія призначена для вниз рівні операційної системи
(Windows 98, Windows Me та Windows 2000) 8 листопада 2001
DirectX 8.1a 4.08.01.0901 (RC?) Цей реліз включає в себе оновлення Direct3D (d3d8.dll) 2002
DirectX 8.1b 4.08.01.0901 (RC7) Це оновлення включає виправлення для DirectShow на Windows 2000 (Quartz.dll) 25 червня 2002
DirectX 8.2 4.08.02.0134 (RC0) Те ж, що DirectX 8.1b, але включає в себе 8,2 DirectPlay 2002
DirectX 9.0 4.09.00.0900 (RC4) 19 грудня 2002
DirectX 9.0a 4.09.00.0901 (RC6) 26 березня 2003
DirectX 9.0b 4.09.00.0902 (RC2) 13 серпня 2003
DirectX 9.0c [10] 4.09.00.0903 З пакетом оновлень 2 для Windows XP ексклюзивні
4.09.00.0904 (RC0) 4 серпня 2004
4.09.00.0904 Windows XP SP2, Windows Server 2003 SP1, Windows Server 2003 R2 і Xbox 360 6 серпня 2004
4.09.00.0904 Windows XP SP3 21 квітня 2008
DirectX - раз на два місяці поновлення [11] 4.09.00.0904 (RC0 для DX 9.0c) 9 лютого 2005 випуск перших 64-розрядної збірки. [12]Остання побудувати для Windows 98 і Windows Me є поширювана від 13 грудня 2006. [13] Квітень 2006 є першою офіційної підтримки Windows Vista [14] і в серпні 2009 року першої офіційної підтримки Windows 7 і DX11 поновлення [15] Випущено два рази на місяць з жовтня 2004 по серпень 2007 року і щоквартально надалі; Остання версія: червень 2010 [16]
DirectX 10 6.00.6000.16386 Windows Vista ексклюзивні 30 листопада 2006
6.00.6001.18000 З пакетом оновлень 1 для Windows Vista, Windows Server 2008
включає в себе 10,1 Direct3D 4 лютого 2008
6.00.6002.18005 З пакетом оновлень 2 для Windows Vista, Windows Server 2008
включає в себе 10,1 Direct3D 28 квітня 2009
DirectX 11 6.01.7600.16385 Windows 7, Windows Server 2008 R2 22 жовтня 2009
7.00.6002.18107 Windows Vista SP2 і Windows Server 2008 SP2, за допомогою платформи Оновлення для Windows Vista і Windows Server 2008 [17] 27 жовтня 2009

Примітки
DirectX 4 не був випущений. Raymond Chen пояснив у своїй книзі "The Old New Thing, що після DirectX 3 був випущений, Microsoft приступила до розробки версії 4 і 5 одночасно. Версія 4 повинен був бути короткостроковими реліз з дрібними рисами обличчя, тоді як версія 5 буде більш істотним звільнення. Відсутність інтересу з боку розробників ігор, особливо планується для DirectX квітня привели в ньому здаються в архів, і звід документів, які вже виділили два нових версій Microsoft в результаті вибору не повторного використання версії 4, щоб описати функції призначені для версії 5 . [19]
Номери версії, як повідомляє DxDiag інструмент Microsoft (версія 4.09.0000.0900 і вище) використовують x.xx.xxxx.xxxx формат номера версії. Тим не менше, DirectX і Windows XP MSDN сторінки стверджує, що в реєстрі завжди має в x.xx.xx.xxxx форматі. Іншими словами, коли вище таблиці перераховані версії '4 .09.00.0904 'DxDiag інструмент Microsoft, можливо, це як '4 .09.0000.0904. [20]
Логотипи

Логотип спочатку нагадував деформованих попереджувальний знак радіації. Спірне, початкова назва проекту DirectX була "Манхеттенського проекту", посилання на американські ядерні ініціативи зброї. Алекс Сент-Джон, ігри євангеліста під час DirectX була задумана, стверджує, що конотації з кінцевого результату проекту "Манхеттен" (ядерна бомбардування Японії) є навмисним, і що DirectX і її сестра проекту, Xbox (яка розділяє аналогічні логотипом), призначені для витіснення японських виробників відеоігор з їх панування в галузі. [22] Тим не менш, це значення публічно заперечує Microsoft, але замість цього стверджує, що це всього лише художнє оформлення. [23]

Компоненти

Компонентів DirectX є
DirectDraw: для малювання 2D графіки (растрової графіки). Зараз застаріле (на користь Direct2D), хоча все ще використовується ряд ігор і відео, як у засобах масової інформації візуалізації додатків.
Direct3D (D3D): для розробки 3D-графіки.
DXGI: для перерахування адаптерами і моніторами та управління ланцюгами для підкачування Direct3D 10 і вище.
Direct2D 2D-графіка
DirectWrite для шрифтів
DirectCompute для обчислень на GPU
DirectInput: для взаємодії з пристроями введення включаючи клавіатури, миші, джойстика с, або інший контролер грі С. Заборонені після версії 8 на користь XInput для Xbox 360 контролерів або стандартний WM INPUT вікно обробки повідомлень для клавіатури і миші.
DirectPlay: для зв'язку з локальної або глобальної мережі. Заборонені після версії 8.
DirectSound: для відтворення та запису сигналу звуки.
DirectSound3D (DS3D): для відтворення 3D-звуку.
DirectMusic: для відтворення фонограм автором у DirectMusic продюсер.
DirectX Media: у складі DirectAnimation для 2D/3D [24] веб анімації, DirectShow для відтворення мультимедіа та потокового мультимедіа, DirectX перетворення веб інтерактивності і Direct3D Нерозподілений Режим високий рівень 3D-графіки. DirectShow містить DirectX плагін с для обробки аудіо сигналу і DirectX Video Acceleration для прискорення відтворення відео.
DirectX Diagnostics (DxDiag): інструмент для діагностики і формування звітів про компоненти, пов'язаних з DirectX, такі як аудіо-, відео-та введення водіїв.
DirectX Media об'єктів: підтримка потокового такі об'єкти, як кодери, декодери і ефекти.
DirectSetup: для установки компонентів DirectX, а також виявлення поточної версії DirectX.
DirectX функціональність надається у вигляді COM-об'єктів стиль та інтерфейсів. Крім того, хоча і не DirectX самих компонентів, керованих об'єктів були побудовані на основі деяких частинах DirectX, такі як Керований Direct3D [25] та графічної бібліотеки XNA [26] поверх Direct3D 9.

DirectX 10

[27]

Значні зміни в API DirectX, DirectX 10 суден і доступна тільки з Windows Vista і вище; попередніх версій Windows, таких як Windows XP не можуть офіційно запустити DirectX 10-ексклюзивні програми. [28] Є неофіційні порти DirectX 10 для XP. [29] Зміни в DirectX 10 були великі.
Багато колишніх частини DirectX API були застарілими в останніх DirectX SDK і буде збережена для сумісності: DirectInput була оголошена застарілою на користь XInput, DirectSound була оголошена застарілою на користь-платформи створення аудіо Хреста Інструментальна система (XACT) і втратив підтримку апаратне прискорення звуку, так як Vista звуковий стек робить звук програмного забезпечення на центральному процесорі. DirectPlay DPLAY.DLL був вилучений і замінений dplayx.dll, гри в яких використовується ця DLL повинні дублювати його і перейменувати його в dplay.dll.

З метою забезпечення зворотної сумісності, DirectX в Windows Vista містить кілька версій Direct3D: [31]

Direct3D 9: емулює поведінку Direct3D 9, як це було в Windows XP. Детальна інформація та переваги Windows Vista Дисплей у Driver Model приховані від програми, якщо WDDM драйверів. Це єдиний API доступна, якщо Є тільки XP графічних драйверів (XDDM) встановлено, після оновлення до Vista, наприклад.
Direct3D 9Ex (відомий всередині операційної системи при розвитку Vista Windows як 9.0L або 9.L): дозволяє повний доступ до нових можливостей WDDM (якщо WDDM драйверів) при збереженні сумісності з існуючими Direct3D додатків. Windows Aero користувачеві інтерфейс заснований на D3D 9Ex.
Direct3D 10: Призначений навколо нової моделі драйверів в Windows Vista і що пропонує ряд заходів з удосконалення надання можливості і гнучкість, у тому числі Shader Model 4.
Direct3D 10.1, інкрементне оновлення Direct3D 10,0 яка входить в комплект постачання, і вимагає, Windows Vista Service Pack 1. [33] Цей реліз основному встановлює кілька зображень стандарти якості для постачальників графіки, даючи розробникам більше контролю над якістю зображення. [35] Він також додає підтримку для паралельного відображення куба і вимагає, щоб відеокарта підтримує Shader Model 4.1 або вище і 32-розрядних операцій з плаваючою комою. Direct3D 10.1 і раніше повністю підтримує апаратне Direct3D 10, а для того, щоб використовувати усі нові можливості, оновлення апаратного забезпечення. [37]

DirectX 11

[38]
[39]

Microsoft представила Direct3D 11 на 08 Gamefest події в Сіетлі, з основними запланованих функцій, включаючи підтримку GPGPU (DirectCompute), мозаїка [41] [43] підтримки, а також поліпшення підтримка багатопоточності для надання допомоги відео розробники гри, розвиваючі ігри, що краще використовувати багатоядерні процесори. [44] Direct3D 11 працює на Windows Vista і Windows 7. Вона буде працювати на майбутнє операційних систем. Частини нового API, такі як багато-обробки ресурсів можуть бути підтримані на апаратних 9/10/10.1-class Direct3D. Обладнання тесселяціі і Shader Model 5.0 потрібна підтримка Direct3D 11 апаратних засобів. [45] Microsoft з тих пір випустила Direct3D 11 технічний перегляд. [46] Direct3D 11 є суворим розширеним Direct3D 10.1 - всі технічні засоби та API функції версії 10,1 зберігаються, а нові можливості додаються тільки в разі потреби були виявлені нові функціональні можливості.
Microsoft випустила фінальну платформи Оновлення для Windows Vista на 27 жовтня 2009, який був п'ять днів після першого випуску Windows 7 (запущений з Direct3D 11, як основний стандарт).

Працює з

Різні релізи Windows включили і підтримку різних версій DirectX, що дозволяє нової версії операційної системи для продовження роботи програми, розроблені для більш ранніх версій DirectX, поки ці версії можуть бути поступово припинено на користь більш нових інтерфейсів, драйверів і обладнання.
API, такі як Direct3D і DirectSound потрібно взаємодіяти з обладнанням, і вони роблять це за допомогою драйвера пристрою. Виробники обладнання повинні написати ці драйвери для конкретних DirectX у версії драйвера пристрою інтерфейсу (або DDI) та тестування кожного апаратним забезпеченням, щоб зробити їх сумісними DirectX. Деякі апаратні пристрої лише сумісні драйвери DirectX (іншими словами, необхідно встановити DirectX для того, щоб використовувати це обладнання). Ранні версії DirectX включений сучасний бібліотеки всіх сумісних драйверів DirectX в даний час. Ця практика була припинена проте, на користь веб-драйверів Windows Update оновлення системи, яка дозволяє користувачам завантажувати тільки водії, що мають відношення до їхніх пристроїв, а не всю бібліотеку.

До DirectX 10, DirectX виконання була покликана бути сумісним з дорослими водіями, це означає, що нові версії API, були розроблені для взаємодії з використанням драйверів написані на попередній версії DDI. Прикладного програміста була запиту доступних апаратних можливостей використання комплексної системи "шапка біт" кожна пов'язана з особливістю обладнання. Наприклад, ігри розроблені і працює на Direct3D 9 з драйвером графічного адаптера призначені для Direct3D 6 буде як і раніше працювати, хоча, швидше за все, з деградованих функціональність.

Однак, Direct3D 10 виконавчі в Windows Vista не може працювати на старих драйверів з-за істотно оновлено DDI, яка вимагає єдиного набором функцій і відмовляється від використання "шапка біт".

Direct3D 11 виконання вводить Direct3D 9, 10 і 10,1 "функції рівня", режими сумісності які тільки дозволяють використовувати апаратні функції визначені у зазначеній версії Direct3D. Для Direct3D 9 апаратних Існують три різних рівнях функції, згруповано за загальним можливості "низький", "мед" і "високого класу" відеокарти; виконання безпосередньо використовує Direct3D 9 DDI надаються в усіх WDDM драйверів.

. NET Framework

У 2002 році Microsoft випустила версію DirectX сумісний з Microsoft. NET Framework, що дозволяє програмістам використовувати функціональність DirectX зсередини. NET додатків з використанням сумісних Мови, таких як керований C + + або використання C # мова програмування. Цей API був відомий як "Managed DirectX" (або багатовимірних виразів для стислості), і стверджував, що працюють на 98% виконання основних рідного DirectX API. У грудні 2005 року, лютий 2006, квітень 2006, і в серпні 2006 року Microsoft випустила оновлення послідовними в цю бібліотеку, кульмінацією яких бета-версія називається Managed DirectX 2.0. Хоча Managed DirectX 2,0 зведений функції, які раніше були розкидані численні вузли в єдину збірку, тим самим спрощуючи залежно від його для розробників програмного забезпечення, розвиток цієї версії згодом було припинено, і він більше не підтримується. Managed DirectX 2,0 бібліотеці закінчився 5 жовтня 2006.
У GDC 2006 Microsoft представила XNA Framework, нові керовані версії DirectX (аналогічні, але не ідентичні Managed DirectX), який призначений для надання допомоги в розробці ігор, зробивши його простіше інтегрувати DirectX, високого рівня шейдерний мова (HLSL) та інші інструментів в одному пакеті. Він також підтримує виконання керованого коду на Xbox 360. XNA Game Studio Express RTM була розміщена на 11 грудня 2006, а для безкоштовного завантаження для Windows XP. На відміну від виконання DirectX, Managed DirectX, XNA Framework або Xbox 360 (API XInput, XACT т.д.) не поставляється у складі Windows. Розробники, як очікується, поширювати компоненти часу виконання разом з гри або програми.

Жоден продукт Microsoft, включаючи останні версії XNA DirectX 10 забезпечує підтримку. NET Framework.

Інший підхід для DirectX в керованому Мови полягає у використанні сторонніх бібліотек, як SlimDX для Direct3D, DirectInput (у тому числі Direct3D 10), Direct Show. NET для DirectShow або підмножина Windows API для CodePack. NET Framework який є відкритим вихідним кодом бібліотеки з Microsoft .

Альтернативи

Існують альтернативи сім'ї з DirectX API с, OpenGL, що мають самі функції. Приклади інших інтерфейсів включає SDL, Allegro, OpenMAX, OpenML, OpenAL, OpenCL, FMOD і т.д. Багато з цих бібліотек крос-платформенний або відкритої бази коду.
Існують також альтернативні реалізації з метою забезпечення і той же інтерфейс, як один у вині.