DirectX

DirectX

informație
Dezvoltat de Microsoft
Ultima versiune 12 (19 mai 2019)
Sistem de operare Microsoft Windows
Tip Interfață de programare
Licență EULA
Documentație docs.microsoft.com/windows/win32/directx

Microsoft DirectX este o colecție de biblioteci destinate programării de aplicații multimedia , mai ales jocuri sau programe care implică videoclipuri , pe platforme Microsoft ( sisteme de operare Xbox , Windows ).

Diferitele biblioteci

Inițial, numele fiecărei biblioteci a început cu Direct, de exemplu: Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound și așa mai departe. DirectX fiind denumirea generică care se referă la toate aceste tehnologii. De-a lungul timpului, această convenție de numire a căzut în desuetudine, X preluând tehnologiile numite Xact, Xinput și care s-au alăturat marii familii de tehnologii DirectX. Așadar, atunci când Microsoft a început dezvoltarea unei console care utilizează intens aceste tehnologii, a predominat X-ul, care poate a dus la denumirea Xbox (și ulterior Xbox 360 , Xbox One și apoi Xbox Series X și S ).

Direct3D (biblioteca pentru 3D în timp real) este utilizat pe scară largă în dezvoltarea de jocuri pentru platforma Microsoft Windows , pentru Xbox și Xbox 360 . Direct3D este, de asemenea, utilizat pentru alte tipuri de aplicații care se bazează pe grafică 3D de înaltă calitate pentru a vizualiza date complexe, de exemplu în sectorul CAD / CAM , deși competitorul său OpenGL este mai bine stabilit în acest domeniu, deoarece există pe multe alte platforme. Direct3D fiind probabil una dintre cele mai recunoscute tehnologii DirectX, nu este neobișnuit să vezi numele DirectX folosit în loc de Direct3D.

Multitudinea componentelor DirectX se prezintă în două forme. Unul a fost destinat doar pentru a rula aplicații dezvoltate folosind aceste tehnologii ( componente runtime ), celălalt fiind un kit de dezvoltare pentru dezvoltatori. Inițial componentele destinate executării aplicațiilor au fost redistribuite cu jocurile care le-au folosit, pe versiunile recente, acestea fiind de asemenea găsite preinstalate cu Windows. SDK - ul este disponibil ca un download gratuit de pe site - ul de dezvoltare Microsoft (MSDN) . Partea de execuție este proprietară și sursele nu sunt accesibile. Sursele exemplelor SDK sunt disponibile împreună cu acesta.

Versiunile Direct3D 9Ex și 10 au fost utilizate de Windows Vista . Aceste două versiuni au folosit funcții specifice noului model de driver de afișare Windows care a apărut cu Windows Vista. Noua infrastructură grafică Windows acceptă virtualizarea hardware-ului grafic față de mai multe aplicații și servicii, de exemplu Desktop Window Manager (managerul de desktop Vista când Aero este activat). Anterior, cu Windows XP , aplicațiile aveau acces exclusiv la placa grafică și își puteau ocupa resursele.

Pe computer, DirectX este în prezent versiunea 12 pe Windows 10 , versiunea 11 pentru Windows 7 , pentru Windows Vista și Windows Server 2008 și 9.0c pentru toate versiunile anterioare de Windows .

Componente

Componentele care alcătuiesc DirectX sunt:

Istoric

Până la DirectX 9

În 1994 , Microsoft era pe punctul de a lansa sistemul său de operare, Windows 95 . Unul dintre factorii determinanți pentru succesul oricărui sistem de operare (SO) rămâne gama de software pe care o permite să ruleze. Trei angajați Microsoft - Craig Eisler, Alex St. John și Eric Engstrom - erau de fapt destul de îngrijorați de faptul că unii dezvoltatori păreau să creadă că sistemul de operare anterior Microsoft, MS-DOS , era o platformă mai bună pentru jocuri, ceea ce ar putea însemna că mai puține jocuri ar fi să fie dezvoltat pentru Windows 95 cu impact negativ asupra succesului sistemului de operare pe care l-ar putea implica.

MS-DOS a permis accesul direct la placa video, tastatură, mouse, plăci de sunet și alte părți ale sistemului, spre deosebire de Windows 95, care a introdus noțiuni de spațiu de adrese specifice fiecărui proces. Prin urmare, Microsoft a trebuit să ofere dezvoltatorilor ceea ce doreau; în plus, a fost necesar să se furnizeze rapid, deoarece data de lansare a noului sistem de operare era la doar câteva luni distanță. Eisler, St. John și Engstrom au început apoi să lucreze la o soluție la această problemă pe care au numit-o DirectX.

Prima versiune a DirectX a fost lansată publicului în Septembrie 1995sub numele de Windows Games SDK. Acesta a fost înlocuitorul DCI pentru Win32 și WinG API disponibil pentru Windows 3.1 . O echipă de dezvoltare de la ATI Technologies a adus în atenția Microsoft o serie de tehnologii grafice specifice lumii jocurilor. Dezvoltarea DirectX a fost condusă de echipa din Eisler (dezvoltator șef), St. John și Engstrom. (Management de proiect). Pe scurt, a permis tuturor versiunilor de Windows de la Windows 95 să beneficieze de capacități multimedia puternice. Eisler a scris pe blogul său despre frenezia cu care au fost făcute versiunile DirectX de la 1 la 5.

Înainte de a exista DirectX, Microsoft a inclus deja suport pentru OpenGL pe Windows NT . La acea vreme, OpenGL avea nevoie de hardware de ultimă generație, care rămânea rezervat utilizatorilor cu mijloace financiare semnificative ca în lumea industriei și, în general, utilizatorilor de sisteme CAD . Direct3D (introdus de Eisler, Engstrom și St. John ca alternativă la OpenGL al SGI ) a fost destinat să fie o tehnologie mai ușoară și mai specializată pentru jocuri. Odată cu puterea plăcilor grafice și a computerelor care evoluează rapid, OpenGL a devenit un standard de facto și o tehnologie accesibilă tuturor. La acea vreme, ciocnirea s-ar fi putut dezlănțui între susținătorii fiecăreia dintre cele două API-uri, inițiativa Microsoft fiind văzută ca o dorință de marginalizare a utilizării OpenGL (vezi Fahrenheit sau Direct3D vs. OpenGL). În orice caz, OpenGL este uneori utilizat împreună cu anumite API-uri DirectX: într-adevăr, OpenGL este omologul Direct3D și nu include neapărat funcționalități care permit gestionarea intrărilor de tastatură sau a mouse-ului sau a sunetului. Acest lucru chiar dacă astăzi bibliotecile precum SDL îndeplinesc aceste nevoi și sunt, de asemenea, utilizate pe scară largă.

În versiunea sa pentru consolă, DirectX a fost folosit ca coloană vertebrală a API-urilor oferite pentru dezvoltare pe Xbox și Xbox 360 . API-ul a fost dezvoltat în comun de Microsoft și Nvidia , care au furnizat hardware-ul grafic prezent pe Xbox-ul original. API-ul disponibil pentru această versiune a Xbox a fost mai mult sau mai puțin echivalent cu DirectX 8.1 , a fost numit DirectXbox, care a fost scurtat la Xbox pentru a obține denumirea comercială.

În 2002 , Microsoft a lansat DirectX 9, care avea suport pentru umbrele mai lungi și versiunea 2.0 a umbrelor vertex. De atunci, Microsoft a continuat să dezvolte DirectX 9 adăugând, de exemplu, suport pentru modelul shader 3.0 cu versiunea DirectX 9.0c , livrată înAugust 2004.

În Aprilie 2005, DirectShow a fost mutat din DirectX SDK în Microsoft Platform SDK. Cu toate acestea, DirectX este încă necesar pentru a compila mostrele DirectShow.

DirectX 10

DirectX 10 este o actualizare majoră a API-ului DirectX. Disponibile numai din Windows Vista , versiunile anterioare ale Windows nu pot rula aplicații care se bazează exclusiv pe această versiune a API-ului. Modificările introduse de DirectX 10 sunt profunde, dar numai partea Direct3D este cu adevărat afectată de acestea. Multe părți ale API-ului DirectX sunt considerate învechite în cea mai recentă versiune a SDK și nu mai sunt prezente din motive de compatibilitate: DirectInput este înlocuit în favoarea XInput, DirectSound în favoarea XACT și Xaudio2 și își pierde accesul direct la hardware-ul de pe Windows Vista. Într-adevăr, noua stivă audio a Vista introduce un nou API numit WASAPI pe care au fost redirecționate funcționalitățile DirectSound. Biblioteca DirectPlay DPLAY.dll a dispărut și ea și a fost înlocuită de o bibliotecă numită dplayx.dll.

Din motive de compatibilitate, mai multe versiuni ale Direct3D sunt instalate pe Windows Vista:
Direct3D 9 oferă aceleași funcționalități ca și versiunea Direct3D 9 disponibilă pentru Windows XP . Aceasta va fi singura versiune disponibilă atâta timp cât un driver Windows Display Model Model nu a fost instalat cu Vista, de exemplu imediat după o actualizare când este prezent doar un driver grafic XP (XPDM).

Direct3D 9Ex (cunoscut și sub numele de 9.0L sau 9.L, L referindu-se la Longhorn, numele de cod Windows Vista folosit înainte de lansare): Această versiune vă permite să beneficiați de anumite caracteristici introduse prin utilizarea driverelor WDDM în timp ce acum este compatibil cu aplicații scrise pentru Direct3D 9 . Interfața Windows Aero se bazează pe D3D 9Ex și folosește unele dintre caracteristicile care nu sunt prezente în Direct3D 9, cum ar fi capacitatea de a partaja suprafețe DirectX între mai multe procese.

Direct3D 10  : Destinat să ofere cel mai direct și complet acces la plăcile grafice moderne prin noul model de driver WDDM. Această versiune conține un număr mare de caracteristici noi, cum ar fi posibilitatea de a utiliza limbajul HLSL în versiunea sa Shader Model 4 .

Direct3D 10.1 este o actualizare minoră a Direct3D 10 care este distribuită și necesită Windows Vista Service Pack 1 . Această versiune adaugă câteva caracteristici suplimentare pentru a oferi dezvoltatorilor mai mult control asupra calității imaginii rezultate. Această versiune are propriile cerințe și necesită suport Shader Model 4.1 pentru operațiuni pe virgulă mobilă pe 32 de biți.

DirectX 10.1 continuă să utilizeze pe deplin cardurile compatibile DirectX 10 , dar pentru a beneficia de toate funcțiile noi, aveți nevoie de un card adecvat.

DirectX 11

Microsoft a prezentat DirectX 11 la „Gamefest 08” din Seattle, cu funcții planificate, inclusiv suport GPGPU (DirectCompute), Direct3D11 cu teselare, precum și îmbunătățire multi-threading, pentru a ajuta dezvoltatorii de jocuri video să realizeze software multi-core. Direct3D 11 rulează pe Windows Vista și Windows 7. Va funcționa și pe următoarele versiuni. Elementele noilor API-uri, cum ar fi „gestionarea resurselor cu mai multe fire”, pot fi acceptate de hardware-ul Direct3D 9/10 / 10.1. Tesselarea hardware, precum și „Shader Model 5.0” necesită Direct3D 11. Microsoft a actualizat Direct3D 11. Direct3D 11 este un superset al Direct3D 10.1 - toate caracteristicile versiunii 10.1 sunt prezente, noile caracteristici nu sunt disponibile numai atunci când Necesar. Aceasta pentru o mai bună compatibilitate.

DirectX 11.1 este prezent în Windows 8 . Suportă WDDM 1.2 pentru performanțe mai bune, oferă o integrare îmbunătățită a Direct2D, Direct3D, DirectCompute și include DirectXMath, XAudio2, precum și biblioteci XNA framework XNA. Include, de asemenea, suport 3D stereoscopic.

DirectX 11.2 este un sistem Windows 8.1 exclusiv . Această evoluție a API aduce suport pentru WDDM 1.3, o partajare dinamică a resurselor între diferitele amintiri ale computerului (numite resurse Tiled ), precum și alte evoluții minore.

DirectX 11.3 este o nouă evoluție a API-ului care va avea anumite funcții ale DirectX 12, în special la nivelul Direct3D.

DirectX 12

6 martie 2014, Microsoft a oficializat anunțul DirectX 12 la Conferința dezvoltatorilor de jocuri de la 17 la21 martieîn San Francisco . Această versiune a DirectX este disponibilă pe Windows 10 , Xbox One și Windows Phone și oferă acces la nivel inferior la resursele de circuite grafice pentru a oferi performanțe mai bune și un consum mai mic de energie. Mijloacele utilizate sunt pentru a facilita distribuția resurselor utilizate, pentru a exploata mai bine plăcile multi-procese și multi-grafice.


Miercuri, 20 mai 2020, Microsoft a anunțat portul DirectX 12 sub sistemul de operare Linux ca parte a dorinței sale de a aduce Windows 10 mai aproape de Linux. Al cărui cod sursă este Open Source și poate fi consultat gratuit.

Porturi în afara Microsoft

Deși DirectX este un API conceput pentru sistemul de operare Windows , există drivere și biblioteci software care oferă o parte din API-ul său pe alte sisteme de operare, cum ar fi:

Versiuni

Versiune Data eliberării
Major Minor Codul versiunii
1 1.0 4.02.0095 30 septembrie 1995
2 2.0 4.03.00.1096 1996
2.0a 5 iunie 1996
3 3.0 4.04.00.0068 15 septembrie 1996
4.04.00.0069 1996
3.0a 4.04.00.0070 Decembrie 1996
3.0b
4 4.0 Niciodată afară
5 5.0 4.05.00.0155 (RC55) 16 iulie 1997
5.2 4.05.01.1600 (RC00) 5 mai 1998
4.05.01.1998 (RC0) 25 iunie 1998
6 6.0 4.06.00.0318 (RC3) 7 august 1998
6.1 4.06.02.0436 (RC0) 3 februarie 1999
6.1a 4.06.03.0518 (RC0) 5 mai 1999
7 7.0 4.07.00.0700  22 septembrie 1999
17 februarie 2000
7.0a 4.07.00.0716 8 martie 2000
2000
7.1 4.07.01.3000 (RC1) 14 septembrie 2000
8 8.0 4.08.00.0400 (RC10) 12 noiembrie 2000
8.0a 4.08.00.0400 (RC14) 5 februarie 2001
8.1 4.08.01.0810 25 octombrie 2001
4.08.01.0881 (RC7) 8 noiembrie 2001
8.1a 4.08.01.0901 (RC?) 2002
8.1b 4.08.01.0901 (RC7) 25 iunie 2002
8.2 4.08.02.0134 (RC0) 2002
9 9.0 4.09.00.0900 (RC4) 19 decembrie 2002
9.0a 4.09.00.0901 (RC6) 26 martie 2003
9.0b 4.09.00.0902 (RC2) 13 august 2003
9.0c 4.09.00.0903  
4.09.00.0904  4 august 2004
6 august 2004
4.09.00.0904 (RC0) August 2005
4.09.00.0905 (RC0) Noiembrie 2008
4.09.00.0906 (RC0) Martie 2009
4.09.00.090? (RC0) iunie 2010
10 10.0 6.00.6000.16386 30 noiembrie 2006
10.1 6.00.6001.18000 18 martie 2008
11 11 6.01.7600.16385 22 iulie 2009
11 6.01.7601.17514 6 februarie 2011
11.1 6.02.9200.16384 1 st luna august 2012
11.2 6.03.9600.16384 17 octombrie 2013
12 12 10.00.10586.0000 29 iulie 2015
10.00.14393.0000 24 august 2016
10.00.15063.0000 5 aprilie 2017
10.00.17134.0001 10 aprilie 2018
10.00.17763.0001 2 octombrie 2018
10.00.18362.0387 noiembrie 2019

Compatibilitate

API-urile precum Direct3D și DirectSound interacționează direct cu hardware-ul prin intermediul driverelor. Producătorii de hardware ar trebui să scrie aceste drivere pentru o versiune specifică a DirectX „Device Driver Interface” (sau DDI). Versiunile mai vechi ale DirectX includeau o serie de actualizări ale driverelor DirectX, dar această practică a fost abandonată în favoarea Windows Update, care poate permite utilizatorilor să descarce doar driverele specifice hardware-ului lor. Versiunile anterioare DirectX 10 au fost destinate să fie compatibile cu driverele mai vechi, a fost posibil să se utilizeze versiuni mai noi de DirectX cu driverele scrise pentru a suporta o versiune mai veche de DDI. De exemplu, un joc bazat pe Direct3D 9 ar putea rula pe o mașină echipată cu o carte având un singur driver dezvoltat în momentul DirectX 6 . Pe de altă parte, cu DirectX 10 pe Vista, ținând cont de amploarea modificărilor și de faptul că anumite funcționalități expuse de API sunt disponibile numai datorită noului model de driver, este imposibil să se utilizeze o aplicație dezvoltată pentru această versiune fără driver. DirectX corespunzător noului model de driver WDDM. Mai multe versiuni ale DirectX sunt preinstalate cu multe versiuni de Windows pentru a sprijini aplicațiile scrise cu versiuni mai vechi ale acestui API, atâta timp cât nu au fost rescrise pentru cea mai recentă versiune și continuă să fie utilizate.

.Cadru net

În 2002, Microsoft a pus la dispoziția dezvoltatorilor o versiune a DirectX SDK aducând ansambluri .Net care permit utilizarea DirectX din cod administrat, fie în C ++ gestionat, C # sau în orice alt limbaj acceptat de .Net Framework. Aceste ansambluri au fost grupate sub numele „Managed DirectX” (sau MDX) și li s-a permis să obțină performanțe care nu trebuiau neapărat să le fie rușine de comparația cu ceea ce se putea obține în C ++ nativ. Îndecembrie 2005, Februarie 2006, Aprilie 2006 și august 2006, Microsoft a pus la dispoziția dezvoltatorilor actualizări succesive ale acestei tehnologii pentru a obține versiunea 2.0 care nu a existat niciodată decât sub forma unei versiuni beta care a expirat la5 octombrie 2006.

În timpul GDC 2006, Microsoft a introdus XNA GSE Framework, destinat să fie noua bibliotecă care permite dezvoltatorilor care doresc să facă jocuri folosind un limbaj .Net pentru a accesa funcționalitățile DirectX. Acest cadru urmărește, de asemenea, să le faciliteze munca prin gruparea funcționalităților care anterior ar putea fi găsite împrăștiate în diferite ansambluri . Acest cadru acceptă, de asemenea, executarea aplicațiilor produse pe Xbox 360 . Versiunea RTM a fost livrată pe11 decembrie 2006, ca pachet descărcabil gratuit. Spre deosebire de DirectX sau Managed DirectX, componentele XNA GSE Framework sau API-urile de pe Xbox 360 (XInput, XACT  etc. ) nu sunt preinstalate cu nicio versiune de Windows, deci este recomandat să le instalați în același timp decât orice joc folosind.

La începutul anului 2013, Microsoft a anunțat sfârșitul dezvoltării XNA și retragerea din programul de certificare Most Valuable Professionals (MVP) pe 1 st aprilie 2014. Comunitatea open source preia apoi cu cadre precum MonoGame (fiind o implementare open source a XNA) și API-uri precum SharpDX care efectuează apeluri către codul DirectX nativ (așa cum a făcut MDX).

64 de biți și 32 de biți

Sistemul DirectX este compatibil cu toate sistemele de operare Microsoft, 32 de biți (x86) și 64 de biți (x64).

Alternative

Există mai multe biblioteci care acoperă adesea unele dintre funcționalitățile DirectX. Folosind o combinație a acestora se poate realiza același set de caracteristici ca DirectX, putem menționa SDL , Allegro , OpenMAX , OpenML , OpenGL , OpenAL , Vulkan , FMOD ,  etc. Aceste biblioteci pot avea avantajul de a face posibilă dezvoltarea de aplicații portabile pe alte sisteme de operare decât Windows. Aceste biblioteci provin în mare parte din proiecte open source .

Alte proiecte, cum ar fi parte din Wine , își propun să ofere o implementare alternativă a aceluiași set de caracteristici.

Note

  1. „  DirectPlay  ” , la docs.microsoft.com ,11 iunie 2009(accesat la 17 ianuarie 2020 )
  2. (în) „  Portal - XNA Xbox LIVE Indie Games  ” , Microsoft
  3. (în) „  Ce urmează pentru DirectX? O prezentare directă DirectX 11 - o prezentare directă DirectX 11  » , Elite Bastards,1 st septembrie 2008(accesat la 4 septembrie 2008 )
  4. (în) „  DirectX 11: O privire asupra a ceea ce urmează  ” , bit-tech.net,17 septembrie 2008
  5. Eroarea modelului pentru data lansării Windows 7 și D3D 11 {{Arhivă link}}  : introduceți un parametru "   "|titre=
  6. Gamefest 2008 și anunțul DirectX 11
  7. http://www.hardware.fr/news/13601/directx-12-officialise.html
  8. Fabien Pellegrini, „  DirectX 12: promisiunile, primele teste  ” , pe clubic.com ,13 aprilie 2015(accesat la 2 octombrie 2020 ) .
  9. De Romain Pomian-Bonnemaison și 20.05.2020 , „  DirectX 12: Microsoft își va transfera tehnologia grafică pe Linux!  » , Pe PhonAndroid ,20 mai 2020(accesat la 2 iunie 2020 )
  10. (în) „  Microsoft / WSL2-Linux Kernel  ” pe GitHub (accesat la 2 iunie 2020 )
  11. (în) „  XNA nu va evolua  ”

linkuri externe