DirectX

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
DirectX
software
Siglă
Tip Cadrul (nu este listat )
Dezvoltator Microsoft Corporation
Ultima versiune 12 (19 mai 2019)
Sistem de operare Microsoft Windows
Licență EULA
( licența nu este gratuită )
Site-ul web DirectX Pagina Principală

DirectX (numit initial „Joc SDK“) este o colecție de API - uri pentru simplificate joc de dezvoltare pentru Microsoft Windows sistem de operare. Kit - ul de dezvoltare (SDK) este disponibil gratuit pe Microsoft site - ul web. DirectX a fost distribuit de către factorii de decizie joc în sine, împreună cu jocul, dar ele sunt, de asemenea, incluse direct în sistemul de operare. În Windows XP există o versiune 9.0c a bibliotecilor, în Windows Vista că este posibil să se instaleze versiunea 11 cu actualizări specifice, în Windows 7 și 8 versiunea 11 este deja inclusă, în timp ce în Windows 10 există deja versiunea 12.

DirectX API

Diferitele componente ale bibliotecilor DirectX sunt disponibile la programator ca obiecte ce corespund COM caietul de sarcini.

Componentele incluse în DirectX 9.0c sunt:

  1. DirectX Graphics: permite prezentarea grafica 2D și 3D pe ecran, interfațare direct cu placa video .
    Acesta permite programatorului să exploateze în mod direct potențialul hardware PC, ocolind Windows dispozitiv Graphics Interface (GDI) și display Interface Device (DDI) . Funcțiile care nu sunt acceptate de hardware sunt emulat prin intermediul software - ului de DirectX datorită stratului de hardware Emulation (HEL) .
    Acesta constă dintr-un nivel scăzut (Direct3D) și un API de nivel înalt (Direct3DX).
    • Direct3D: este proiectat pentru aplicații grafice complexe , care necesită o rată de reîmprospătare ridicată de ecran (cum ar fi jocurile video ). Până la versiunea 8.0 au fost DirectDraw (2D grafică) și Direct3D (numai grafica 3D), dintre care cele mai noi versiuni există doar API pentru tri-dimensionale grafice (care, dacă este necesar, de asemenea, face în 2D folosind poligoane cu texturi fără perspectivă).
    • Direct3DX: se bazează pe Direct3D pentru a oferi capacități similare , cu mai puțin de complexitate.
    • DirectX raytracing: în timp real ray tracing pentru DirectX 12, prescurtată DXR.
  2. DirectInput: gestionează date de intrare tastatura , mouse - ul , joystick - ul sau orice alt joc periferice, ocolind pentru Windows sistemul de mesaje și să aibă acces direct hardware - ul, fie că este vorba analogic sau digital , . Suportă force feedback efecte.
  3. DirectPlay: Oferă suport pentru jocuri în rețea. Se compune în principal dintr - un „cerere“ la nivel de protocol (vezi modelul OSI ) , care gestionează obiecte logice , cum ar fi sesiune de joc și jucătorii (diferențiate în distanță și locale).
    În general, cu toate acestea, utilizarea DirectPlay este conectat la o supraîncărcare de comunicare considerabilă, pentru care a primit o primire călduță între dezvoltatori, care au apelat mai des la ad-hoc implementări de rețea prin intermediul socket (care permite orice compatibilitatea cu joc servere pe Linux , ceea ce este imposibil cu DirectX legat de sistemul de operare Microsoft). DirectPlay este încă inclusă în DirectX, dar nu mai este dezvoltat. (Această caracteristică este îndepărtată în mod implicit pe Windows 8.1, dar poate fi reinstalat prin intermediul „Programe și caracteristici“).
  4. DirectSound: interfețe cu placa de sunet pentru a reda și înregistra efecte de sunet. Suporturi audio pozițional (care simulează spatialitatea sunetului 3D).
    Sunetele pot fi modificate de efecte din diferite tampon de intrare (secundar Sound Tampoane), apoi se amestecă împreună în tamponul o ieșire (Primary Sound tampon). Soluțiile tampon de intrare pot fi statice (de fișiere) sau dinamice (streaming de la un microfon, etc.) și cantitatea acestora depinde exclusiv de puterea de calcul a computerului. DirectSound se poate baza pe funcționalitatea cardului de sunet, în cazul în care susține efectele necesare. Trei efecte sunt de volum, egalizare , panning, reverb , distorsiune , diferite efecte tridimensionale și simularea efectului Doppler .
  5. DirectMusic: acceptă redarea de muzică ( MIDI , dar nu și MP3 ). Oferă funcționalitatea unui software de sintetizator , atunci când este necesar.
  6. DirectShow: pixuri diferite fișiere multimedia (de exemplu , MPEG filme sau MP3 audio) și acceptă transmiterea în flux prin intermediul internetului .
  7. DirectSetup: Permite programator pentru detectarea instalat DirectX și să actualizeze componentele sale în timpul instalării programului său.
  8. Obiecte DirectX Media: permite modificarea fluxurilor audio și video, astfel încât acestea să poată fi reproduse prin DirectShow sau DirectSound.

Istorie

Inițial destinat pentru jocuri video industria dezvoltator, DirectX a devenit , de asemenea , utilizat pe scară largă în industriile de alte tipuri de software. De exemplu, Direct3D este din ce în ce mai populare în inginerie domeniu, datorită capacității de a face rapid de înaltă calitate grafică 3D folosind cele mai noi 3D placilor video .

În 1994 , Microsoft a fost pe punctul de introducere pe piață a noului sistem de operare - Windows 95 . Principalul factor care ar determina satisfacția utilizatorilor cu acest nou sistem de operare ar fi ce programe ar putea rula pe mașinile pe care le-a utilizat. Microsoft a fost în cauză, pentru că programatorii au avut tendința de a vedea sistemul de operare anterior Microsoft, DOS , ca cea mai bună platformă pentru jocuri de programare, ceea ce însemna că puține jocuri vor fi dezvoltate pentru Windows 95 și sistemul de operare nu ar fi foarte de succes.

DOS permis accesul direct la placi video, tastaturi și mouse - uri, periferice audio și toate celelalte părți ale sistemului de operare, în timp ce Windows 95, cu noul său model de plug-and-play , accesul limitat la toate aceste dispozitive de lucru pe o mai standardizate model. Microsoft avea nevoie de o modalitate de a da programatorilor ceea ce au vrut, iar acum, ca sistem de operare a fost de doar cateva luni de la lansare. Microsoft a început să dezvolte un API grafica in-house spre sfârșitul anului 1994 , dar după mai multe luni de Microsoft a decis că nu a fost suficient timp pentru a permite să construiască API - ul de la zero. În februarie 1995 de , Microsoft a luat decizia de a achiziționa britanice Rendermorphics 3D , inclusiv laboratorul său API - ul, grafica 3D API Reality Lab, prin redeveloping API - ul care a luat numele de DirectX.

Prima versiune de DirectX a fost lansat în septembrie 1995 de sub numele de Windows Games SDK. Acesta a fost Win32 API care ar înlocui API insuficiente și prost născut pentru Win16 sistemul de operare (DCI și aripa ). Dezvoltarea DirectX a fost urmată de echipa de Craig Eisler (lider de proiect), Alex St. John (tehnologie Evanghelistul), și Eric Engstrom (manager de program). Pune pur și simplu, a permis toate versiunile de Microsoft Windows, începând cu Windows 95, pentru a încorpora multimedia de înaltă calitate.

Înainte de DirectX a existat, Microsoft a inclus deja OpenGL pe al Windows NT platforma. La acea vreme, OpenGL hardware - ului necesar high-end și a fost limitat la inginerie și utilizarea CAD . Direct3D ar fi fost un pic ajutor pentru orientate spre joc OpenGL. Deoarece puterea de plăci video și computerele pe care ruleaza crescut, OpenGL a devenit mainstream. În acest moment o „luptă“ a început între fanii de OpenGL (cross-platform) și Direct3D (numai pentru Windows), pe care mulți se face referire ca un alt exemplu de tactica Microsoft. Cu toate acestea, celelalte API - uri DirectX sunt adesea combinate cu OpenGL în mai multe jocuri video , deoarece OpenGL nu include toate caracteristicile DirectX (cum ar fi suport pentru sunet sau joystick - ul). Multe încercări în această direcție au eșuat.

DirectX a fost folosit ca bază pentru Microsoft Xbox consola API. API - ul a fost dezvoltat în colaborare între Microsoft și nVidia , care a dezvoltat hardware - ul utilizat în consolă. Xbox API-ul este similar cu DirectX versiunea 8.1, dar nu este upgradabil, spre deosebire de alte tehnologii de console.

În 2002 , Microsoft a lansat DirectX 9 cu suport pentru utilizarea cu programe mai complicate decât înainte, cu pixel si vertex shader versiunea 2.0. Microsoft a continuat să actualizeze DirectX prin adaugarea modelului shader 3.0 funcții în DirectX 9.0c în luna august 2004 de .

Cu versiunea 8, ambalaje pentru Net Framework au fost introduse , astfel încât să puteți dezvolta în mod direct cu această platformă.

versiune DirectX Versiunea numarul Sistem de operare Data distribuției
DirectX 1.0 4.02.0095 30 septembrie 1995
DirectX 2.0 ? Numai trimis cu unele aplicații 3D de partid 1996
DirectX 2.0A 4.03.00.1096 Windows 95 OSR2 și Windows NT 4.0 5 iunie 1996
DirectX 3.0 4.04.00.0068 15 septembrie 1996
4.04.00.0069 Versiunea ulterioară a DirectX 3.0 a inclus Direct3D 4.04.00.0069 1996
DirectX 3.0a 4.04.00.0070 Windows NT 4.0 Service Pack 3 (și mai târziu)
Cea mai recentă versiune acceptată DirectX pentru Windows NT 4.0
Decembrie 1996
DirectX 3.0b 4.04.00.0070 A fost o modificare minoră a 3.0a , care a stabilit o problemă cosmetice cu versiunea japoneză a Windows 95 Decembrie 1996
DirectX 4.0 niciodată distribuit
DirectX 5.0 4.05.00.0155 (RC55) Disponibil ca beta pentru Windows NT 5.0, dar , de asemenea , instalabil pe Windows NT 4.0 Luna iulie de 16, 1997 de
DirectX 5.2 4.05.01.1600 (RC00) DirectX versiunea 5.2 pentru Windows 95 5 mai 1998
4.05.01.1998 (RC0) DirectX versiunea 5.2 pentru Windows 98 5 mai 1998
DirectX 6.0 4.06.00.0318 (RC3) Windows CE ca o punere în aplicare pe Dreamcast 7 august 1998
DirectX 6.1 4.06.02.0436 (RC0) 3 februarie 1999
DirectX 6.1a 4.06.03.0518 (RC0) Windows 98 SE exclusivă 5 mai 1999
DirectX 7.0 4.07.00.0700 (RC1) 22 septembrie 1999
4.07.00.0700 Windows 2000 17 februarie 2000
DirectX 7.0a 4.07.00.0716 (RC0) 8 martie 2000
4.07.00.0716 (RC1) 2000
DirectX 7.1 4.07.01.3000 Windows Me exclusiv Luna septembrie pe 14, anul 1999
DirectX 8.0 4.08.00.0400 (RC10) 12 noiembrie 2000
DirectX 8.0a 4.08.00.0400 (RC14) Cea mai recentă versiune acceptată pentru Windows 95 5 februarie 2001
DirectX 8.1 4.08.01.0810 Windows XP , Windows Server 2003 și Xbox exclusivă 25 octombrie 2001
4.08.01.0881 (RC7) Versiunea pentru sistemele de operare mai vechi
(Windows 98, Windows Me și Windows 2000)
8 luna noiembrie, 2001 de
DirectX 8.1a 4.08.01.0901 (RC?) Această versiune include o actualizare pentru Direct3D (D3d8.dll) 2002
DirectX 8.1b 4.08.01.0901 (RC7) Această actualizare include un fix pentru DirectShow pe Windows 2000 (Quartz.dll) 25 iunie 2002
DirectX 8.2 4.08.02.0134 (RC0) Ca și DirectX 8.1b , cu adaos de DirectPlay 8.2 2002
DirectX 9.0 4.09.00.0900 (RC4) 19 decembrie 2002
DirectX 9.0a 4.09.00.0901 (RC6) Martie Aprilie de 26, 2003 de
DirectX 9.0b 4.09.0000.0902 (RC2) Luna august 13, 2003 de
DirectX 9.0c 4.09.00.0903 Windows XP Service Pack 2 exclusiv
4.09.00.0904 (RC0) 4 august 2004
4.09.00.0904 Windows XP Service Pack 2, Windows Server 2003 Service Pack 1, Windows Server 2003 R2, și Xbox 360 (versiune modificată) 6 august 2004
DirectX 9.0c - actualizări periodice 4.09.00.0904 (RC0) Aceasta din 13 decembrie 2004 este cea mai recentă versiune pe 32 de biți numai suficient pentru Windows Me și Windows 2000 pe 32 de biți. actualizări bilunar din octombrie 2004 până în august 2007 și, ulterior, trimestrial; Cea mai recentă versiune: Noiembrie anul 2010
DirectX 10 6.00.6000.16386 Windows Vista exclusivă 30 noiembrie 2006
6.00.6000.00000 Ediția modificate pentru Windows XP prin KM-Software 4 decembrie 2007
6.00.6001.18000 Windows Vista SP1 , Windows Server 2008
include Direct3D 10.1 care introduce 4.1 modelele Shader
4 februarie 2008
DirectX 11 6.01.7600.16385 Windows Vista SP2 si Server 2008 SP2 , prin actualizarea platforma pentru Windows Vista și o actualizare suplimentară de la Windows Update, 7 și Server 2008 R2 27 octombrie 2009
DirectX 11.1 6.02.9200.16384 Windows 8 , Phone 8 , Windows Server 2012 26 octombrie 2012
DirectX 11.2 6.03.9600.16384 Windows 8 , RT , Windows Server 2012 R2
DirectX 12 10.00.10240 Ferestre 10 , Ferestre 10 Mobile , Windows Server 2016 29 iulie 2015

Compatibilitate

Hardware producătorii trebuie să scrie drivere pentru fiecare componentă și să le testați pentru a le face compatibile DirectX. Multe periferice hardware moderne au DirectX numai drivere compatibile (cu alte cuvinte, vă sunt necesare pentru a instala DirectX înainte de a putea utiliza hardware-ul). Primele versiuni ale DirectX a inclus o bibliotecă actualizată a tuturor conducătorilor auto compatibile până disponibile la acel moment. Acest comportament a fost întrerupt în favoarea actualizarea automată face cu Windows Update , care permite utilizatorilor să descarce numai driverele legate de hardware - ul lor, mai degrabă decât întreaga bibliotecă.

Unele driver-ele suportă doar o singură versiune de DirectX. Dar DirectX este compatibil (compatibil cu trecutul), ceea ce înseamnă că noi versiuni suportă mai vechi. De exemplu, dacă aveți DirectX 9 instalat pe un sistem și se execută un joc de scris pentru DirectX 6, ar trebui în continuare. Jocul va folosi ceea ce este cunoscut sub numele de DirectX 6 „interfață“. Orice nouă versiune de DirectX trebuie să sprijine orice versiune anterioară.

Modificări în DirectX10

DirectX 10 arhitectura

DirectX10 au noi DLL-uri mai rapide datorită abandonarea compatibilitate cu versiunile anterioare. Prin urmare, acest lucru nu este gestionat de DirectX 10, dar de DirectX 9.0L, care sunt paralele cu sistemul de operare Windows Vista. Suport pentru Shader Model 4.0 și unificat geometrie Shaders sau shadere. Shader unificate vă permit să utilizați oricare dintre unitățile shader disponibile pe placa grafică, indiferent pentru calculul de pixeli, noduri, geometrii, etc. în acest fel este posibil să se exploateze toată puterea de calcul a plăcii grafice în orice moment. DirectX 10, datorită noului kernel Windows Vista, vă permit să facă scene mai complexe, cu intervenția CPU mai puțin, prin gestionarea echilibrului de sarcină între CPU și GPU, cu optimizarea transferurilor. Deasupra capului obiect este drastic redus, adică timpul suplimentar de calcul pentru a crea obiecte, datorită faptului că , odată cu DX10 crearea are loc direct pe unitatea de procesare vizuală , fără a trece prin CPU pentru fiecare obiect în primul rând ( în timp cu DX9 deja de pornire de la 500 obiecte gâtuire între API și CPU a devenit vizibil și performanță a scăzut brusc).

DirectX10 a făcut unele schimbări mari care revolutioneaza modul in care scrie aplicatii RealTime, iar acum vom arunca o privire la unele dintre ele.

Îndepărtarea completă a conductei fixe

În DirectX10 există o filozofie diferită în utilizarea dispozitivului. Acum este văzut nu ca centrul de control total al unei cereri, dar sarcinile sale sunt ușurate prin plasarea acesteia la un nivel de resurse, tot ce este necesar (o textură, un tampon de vârf sau altul) trebuie și poate fi creată doar prin intermediul dispozitivului. Deci, nu va mai fi funcțiile tipice de a acționa prin intermediul dispozitivului pe redare, după cum putem vedea în acest exemplu de D3D9.

Dispozitiv Presupunem că este un pointer valid și de lucru la clasa IDirect3DDevice9

 device-> SetTexture (ExampleTexture); // Introduceti textura pentru render următoare
  device-> SetRenderState (D3DRS_LIGHTENABLE, fals) // Stinge lumina

În acest mic exemplu este posibil să se realizeze că tot ceea ce trebuie să fie introduse pentru redarea se face prin intermediul dispozitivului. Aceasta se numește conducta fixă. În acest D3D10 este abolită, înlocuindu - l cu Shader : D3D10 atunci fiecare cerere trebuie să fie însoțită de cel puțin o Shader, în caz contrar nu va fi posibil să se facă nimic.

Această revoluție va aduce dificultăți semnificative pentru cei care doresc să se apropie de lumea 3D prin Direct3D10, ca înțelegerea mecanismului de redare va fi mai dificil.

Modificări în D3DX

D3DX, celebrul lib născut cu DirectX8 pentru a face sarcina mai ușoară pentru programatori, a fost modificat.

În primul rând, multe funcții și clase pe shader (D3DXCompileShaderFromFile, D3DXAssembleShaderFromFile) au fost transmise de la D3DX la D3D. Acest lucru înseamnă că acestea au trecut din auxiliar la biblioteca principală. Acest lucru subliniază și mai mult faptul că shaderului devine fundamental în Direct3D10. Diferite clase pentru gestionarea animațiilor au fost eliminate complet (ID3DXAllocateHiearchy, D3DXMeshContainer, D3DXFrame), acest lucru înseamnă un nou sistem de animație. Dintre acestea, programatori care au criticat mult timp sistemul de animație de Direct3D9, poate un pic prea urât pentru a gestiona, se va bucura foarte mult.

Dispozitiv automat pierdut

Direct3D10 este capabil să gestioneze în mod automat dispozitivele pierdute, adică acele condiții în care randare scena este pierdut, de exemplu , atunci când o fereastră care conține o aplicație D3D10 este redusă la minimum. Cu Direct3D9 la acel moment a fost necesar să se oprească redarea, așa cum nimeni nu ar vedea rezultatul desenului. De asemenea, gestionează recuperarea dispozitivelor atunci când trec de la o stare stand la un desen (de la minimizată la maximizată). Anterior, a fost necesar, în fiecare cadru, pentru a verifica starea dispozitivului, și resetare dacă este necesar, în acest fel

 if (FAILED (device-> TestCooperativeLevel ())
     device-> Reset (& d3dpp);

În cazul în care d3dpp este o structură care conține diferite setări ale dispozitivului (dimensiunea backbuffer, fereastra pe care să atragă, etc.).

În plus, funcția TestCooperativeLevel a fost înlocuită cu funcția CheckDeviceState care se întoarce mult mai multe informații decât cel precedent.

Geometrie Shaders

În noul Shader Model 4.0, există shadere geometrie, nu esențiale pentru un joc, dar ele vor fi extrem de utile. Acestea pot fi considerate ca o extensie a vertex shader. Vertex shader, așa cum sugerează și numele, poate procesa doar un singur nod la un moment dat, în timp ce shadere geometrie va fi capabil să se ocupe de geometrii întregi.

Pentru fiecare nod Vertex shader se întoarce 1 vertex, prin urmare, nu se poate citi datele din nodurile vecine (aceasta inhibă diferite tehnici: de exemplu, merge înapoi de la vârful care este citit triunghiul care aparține): shader vertex de fapt primește un float4 care indică poziția sa inițială, și se întoarce altul care indică noua poziție (care poate , de asemenea , să rămână neschimbate). Shader geometrie în loc primește ca intrare 1 nod sau un triunghi sau până la 6 triunghiuri, dar se întoarce 1 sau mai multe primitivelor.

Aceasta înseamnă că, dintr-un simplu triunghi de intrare, este posibil să se creeze chiar 1000 triunghiuri, fără a fi nevoie să le atragă în timp ce face în mod normal (de exemplu, a crea un tampon de vârf sau tampon index). Prin urmare, este posibil să se varieze continuu numărul de triunghiuri de tras, în funcție de distanța, inhibarea funcțiilor D3DX în ceea ce privește numărul de noduri să fie trase într-o anumită ochiuri.

Shader geometrie vă permite să scrie cod hardware care creează triunghiuri din aer subțire. Acest lucru poate părea inutilă, dar să vedem un mic exemplu practic.

De obicei, pentru a trage mare, într-un mod realist, utilizați pentru a face o grilă mare de puncte și de a le face oscileze. Acest lucru ia o mulțime de memorie.

Dar, în cazul în care camera se află la o distanță considerabilă de la mare, este inutil să facă prea detaliat ca previne distanta afișarea rezultatelor detaliile fine. Prin urmare, ar fi util să se proporție detaliile la distanta de la mare.

Folosind shadere geometrie va fi posibil să se calculeze numărul de poligoane de la distanta, chiar le reduce la 2! Și apoi pe măsură ce vă apropiați puteți crește numărul de acesta din urmă, având în același timp un efect realist, care va consuma resurse proporțional cu necesitatea.

Alte aplicații ale shadere geometrie vor fi în umbre stencil, care motorul grafic Doom3 gestionate prin intermediul procesorului , ceea ce face jocul foarte grele.

Un alt instrument Microsoft lucrează la este XNA , un cadru pentru a sprijini joc de dezvoltare , prin integrarea DirectX, shaderele limbaj de nivel înalt ( HLSL ), și mai mult pe multiple platforme. Acest lucru va face conversia între un sistem XNA și un alt mod considerabil mai ușor, ceea ce face portare de la Xbox la PC (și vice - versa) mult mai ușor.

DirectX 11

Versiunea 11 de DirectX a fost anunțat în Seattle în timpul GameFest 08. concepută inițial pentru Windows 7 a fost apoi portat la Vista, de asemenea. Este un superset de DirectX 10, adică își păstrează toate API-urile sale și adaugă noi funcții numai după cum este necesar. În special, cu această versiune a bibliotecilor, mozaicării hardware apare, ceea ce îmbunătățește foarte mult realism scenelor 3D în timp real. Alte inovații importante sunt GPGPU suportul cu DirectCompute API și adoptarea Shader Model 5; suport pentru multithreading a fost de asemenea îmbunătățit foarte mult. DX11 Caracteristici (cu excepția Shader 5) poate fi susținută și de hardware compatibil DX9 sau DX10.

DirectX 12

Versiunea 12 de DirectX a fost anunțată de Microsoft la Conferința de joc Developer la data de 20 martie 2014. Dedicată exclusiv pentru Windows 10 și nu este compatibil cu sistemele de operare anterioare, caracteristica sa cea mai importantă , de departe , este un API de nivel scăzut, similar cu ceea ce deja dezvoltate de AMD cu Mantale , Apple cu metal și de Khronos Group cu Vulkan . Noul API, cum ar fi cele ale concurenților săi, este mult mai flexibil și mai rapid, pentru a permite viteze mai mari de randare. Pe de altă parte, dezvoltatorul trebuie să aibă grijă de tot managementul memoriei. Alte inovații importante ale DX12 sunt: ​​introducerea suportului oficial al modului multi-GPU, care a fost lăsat anterior la punerea în aplicare a producătorilor placa video. Și introducerea de raze de urmărire pentru Nvidia 20 GeForce seria video de carduri . [1]

Notă

Elemente conexe

Alte proiecte

linkuri externe

Microsoft Portale Microsoft : accedi alle voci di Wikipedia che trattano di microsoft