Utviklet av | Microsoft |
---|---|
Siste versjon | 12 (19. mai 2019) |
Operativsystem | Microsoft Windows |
Type | Programmeringsgrensesnitt |
Tillatelse | EULA |
Dokumentasjon | docs.microsoft.com/windows/win32/directx |
Microsoft DirectX er en samling biblioteker beregnet på programmering av multimediaapplikasjoner , nærmere bestemt spill eller programmer som involverer video , på Microsoft- plattformer ( Xbox , Windows- operativsystemer ).
Opprinnelig startet navnet på hver av disse bibliotekene med Direct, for eksempel: Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound og så videre. DirectX er det generiske navnet som refererer til alle disse teknologiene. Over tid har denne navngivningskonvensjonen falt i bruk, X overtok fra teknologiene kalt Xact, Xinput og som har sluttet seg til den store familien av DirectX-teknologier. Så da Microsoft startet utviklingen av en konsoll som bruker intensiv bruk av disse teknologiene, var X dominerende, noe som kan ha ført til navnet Xbox (og deretter Xbox 360 , Xbox One og deretter Xbox Series X og S ).
Direct3D (biblioteket for sanntids 3D) brukes mye i utviklingen av spill for Microsoft Windows-plattformen , for Xbox og Xbox 360 . Direct3D brukes også til andre typer applikasjoner som er avhengige av 3D-grafikk av høy kvalitet for å visualisere komplekse data, for eksempel i CAD / CAM- sektoren, selv om konkurrenten OpenGL er bedre etablert i dette feltet fordi den eksisterer på mange flere plattformer. Direct3D er kanskje en av de mest anerkjente DirectX-teknologiene, og det er ikke uvanlig å se navnet DirectX brukt i stedet for Direct3D.
Mangfoldet av DirectX-komponenter kommer i to former. Den ene ment bare å kjøre applikasjoner som er utviklet ved hjelp av disse teknologiene ( kjøretidskomponenter ), den andre er et utviklingssett for utviklere. Opprinnelig ble komponentene som var ment for utførelse av applikasjonene omdistribuert med spillene som benyttet seg av dem. De nyeste versjonene er også funnet forhåndsinstallert med Windows. Den SDK er tilgjengelig som en gratis nedlasting fra utviklingssiden (MSDN) Microsoft . Den runtime del er proprietær og kildene er ikke tilgjengelige. Kildene til SDK-eksemplene er tilgjengelige med denne.
Direct3D versjoner 9Ex og 10 ble brukt av Windows Vista . Disse to versjonene brukte funksjoner som er spesifikke for den nye Windows Display Driver Model som dukket opp med Windows Vista. Den nye grafiske Windows-infrastrukturen støtter virtualisering av den grafiske maskinvaren overfor flere applikasjoner og tjenester, for eksempel Desktop Window Manager (Vista desktop manager når Aero er aktivert). Tidligere med Windows XP hadde applikasjoner eksklusiv tilgang til grafikkortet og kunne ta opp ressursene.
På PC er DirectX for øyeblikket versjon 12 på Windows 10 , versjon 11 for Windows 7 , for Windows Vista og Windows Server 2008 og 9.0c for alle tidligere versjoner av Windows .
Komponentene som utgjør DirectX er:
I 1994 var Microsoft i ferd med å lansere operativsystemet Windows 95 . En av de avgjørende faktorene for suksessen til ethvert operativsystem (OS) er fortsatt programvaren den lar kjøre. Tre Microsoft-ansatte - Craig Eisler, Alex St. John og Eric Engstrom - var faktisk ganske bekymret for at en rekke utviklere syntes å tro Microsofts tidligere operativsystem, MS-DOS , var en bedre plattform for spill, noe som kan bety at færre spill ville utvikles for Windows 95 med negativ innvirkning på suksessen til det operativsystemet som kan innebære.
MS-DOS tillot direkte tilgang til skjermkortet, tastaturet, musen, lydkortene og andre deler av systemet i motsetning til Windows 95, som introduserte forestillinger om adresseområdet som var spesifikt for hver prosess. Microsoft måtte derfor gi utviklerne det de ønsket seg; dessuten var det nødvendig å gi det raskt, ettersom utgivelsesdatoen for det nye operativsystemet bare var noen måneder unna. Eisler, St. John og Engstrom satte deretter i gang med en løsning på dette problemet som de kalte DirectX.
Den første versjonen av DirectX ble utgitt for publikum i September 1995under navnet Windows Games SDK. Dette var DCIs erstatning for Win32 og WinG API tilgjengelig for Windows 3.1 . Et utviklingsteam fra ATI Technologies gjorde Microsoft oppmerksom på en rekke grafiske teknologier som er spesifikke for spillverdenen. Utviklingen av DirectX ble ledet av teamet fra Eisler (sjefutvikler), St. John og Engstrom. (Prosjektledelse). Kort sagt, det tillot alle versjoner av Windows siden Windows 95 å dra nytte av kraftige multimediafunksjoner. Eisler skrev på bloggen sin om vanviddet som DirectX- versjon 1 til 5 ble laget med.
Før DirectX eksisterte hadde Microsoft allerede inkludert støtte for OpenGL på Windows NT . På den tiden krevde OpenGL avansert maskinvare som var forbeholdt brukere med betydelige økonomiske midler som i industriens verden og mer generelt brukere av CAD-systemer . Direct3D (introdusert av Eisler, Engstrom og St. John som et alternativ til SGIs OpenGL ) var ment å være en lettere og spesialisert følgesvennsteknologi for spill. Med kraften til grafikkort og datamaskiner som raskt utviklet seg, ble OpenGL en de facto standard og en teknologi tilgjengelig for alle. På den tiden kan sammenstøtet ha raste mellom tilhengere av hver av de to API-ene, og Microsofts initiativ ble sett på som et ønske om å marginalisere bruken av OpenGL (se Fahrenheit eller Direct3D vs. OpenGL). I alle fall brukes OpenGL noen ganger i forbindelse med visse DirectX APIer: OpenGL er faktisk motstykket til Direct3D og inkluderer ikke nødvendigvis funksjoner som gjør det mulig å administrere tastatur- eller musinnganger eller lyd. Dette selv om biblioteker som SDL i dag også oppfyller disse behovene og også brukes mye.
I konsollversjonen har DirectX blitt brukt som en ryggrad i API-ene som tilbys for utvikling på Xbox og Xbox 360 . API-et ble utviklet i fellesskap av Microsoft og Nvidia , som ga grafikkmaskinvaren som var tilstede på den originale Xbox. API-en som var tilgjengelig for denne versjonen av Xbox, tilsvarte mer eller mindre DirectX 8.1 , den ble kalt DirectXbox, som ble forkortet til Xbox for å få handelsnavnet.
I 2002 ga Microsoft ut DirectX 9 som hadde støtte for lengre shaders og versjon 2.0 av vertex shaders. Siden den gang har Microsoft fortsatt å utvikle DirectX 9 ved å legge til for eksempel støtte for shader- modellen 3.0 med DirectX 9.0c- versjonen , levert iAugust 2004.
I April 2005, DirectShow er flyttet fra DirectX SDK til Microsoft Platform SDK. Imidlertid er DirectX fortsatt nødvendig for å kompilere DirectShow-prøvene.
DirectX 10 er en stor oppdatering av DirectX API. Tidligere versjoner av Windows er bare tilgjengelig fra Windows Vista , og kan ikke kjøre applikasjoner som bare er avhengige av denne versjonen av API-en. Endringene introdusert av DirectX 10 er dype, men bare Direct3D-delen er virkelig påvirket av dem. Mange deler av DirectX API regnes som foreldet i den nyeste versjonen av SDK og er ikke lenger tilstede av kompatibilitetsårsaker: DirectInput erstattes til fordel for XInput, DirectSound til fordel for XACT og Xaudio2 og mister direkte tilgang til maskinvaren på Windows Vista. Den nye lydbunken med Vista introduserer faktisk en ny API kalt WASAPI som funksjonene til DirectSound er omdirigert til. DirectPlay DPLAY.dll-biblioteket har også forsvunnet og er erstattet av et bibliotek kalt dplayx.dll.
Av kompatibilitetsårsaker er flere versjoner av Direct3D installert på Windows Vista:
Direct3D 9 har de samme funksjonene som versjonen av Direct3D 9 som er tilgjengelig for Windows XP . Dette vil være den eneste tilgjengelige versjonen så lenge en Windows Display Driver Model-driver ikke er installert med Vista, for eksempel like etter en oppdatering når bare en XP-grafikkdriver (XPDM) er til stede.
Direct3D 9Ex (også kjent som 9.0L eller 9.L, L som refererer til Longhorn, Windows Vista-kodenavn som ble brukt før utgivelsen): Denne versjonen lar deg dra nytte av visse funksjoner introdusert ved bruk av WDDM- driverne, mens du nå er kompatibel med søknader skrevet for Direct3D 9 . Den Windows Aero-grensesnittet er basert på D3D 9Ex og bruker noen av de funksjoner som ikke er tilstede i Direct3D 9 , slik som evnen til å dele DirectX flater mellom flere prosesser.
Direct3D 10 : ment å gi mest direkte og full tilgang til moderne grafikkort gjennom den nye WDDM-drivermodellen. Denne versjonen inneholder et stort antall nye funksjoner, for eksempel muligheten til å bruke HLSL-språket i Shader Model 4- versjonen .
Direct3D 10.1 er en mindre oppdatering av Direct3D 10 som distribueres og krever Windows Vista Service Pack 1 . Denne versjonen legger til noen ekstra funksjoner for å gi utviklere mer kontroll over kvaliteten på det resulterende bildet. Denne utgivelsen har sine egne krav og krever Shader Model 4.1- støtte for 32-biters flytende punktoperasjoner.
DirectX 10.1 bruker fortsatt DirectX 10- kompatible kort , men for å dra nytte av alle de nye funksjonene, trenger du et passende kort.
Microsoft avduket DirectX 11 på 'Gamefest 08' i Seattle, med planlagte funksjoner, inkludert GPGPU (DirectCompute) -støtte, Direct3D11 med tessellering samt forbedret multitråding, for å hjelpe utviklere av videospill med å oppnå flerkjerneprogramvare. Direct3D 11 kjører på Windows Vista og Windows 7. Den fungerer også på følgende versjoner. Elementer av de nye API-ene som 'multi-threaded resource handling' kan støttes av Direct3D 9/10 / 10.1 hardware. Maskinvaretessellering så vel som 'Shader Model 5.0' krever Direct3D 11. Microsoft har siden oppdatert Direct3D 11. Direct3D 11 er et supersett av Direct3D 10.1 - alle funksjonene i versjon 10.1 er til stede, de nye funksjonene er ikke tilgjengelig bare når behov for. Dette for bedre kompatibilitet.
DirectX 11.1 er til stede i Windows 8 . Den støtter WDDM 1.2 for bedre ytelse, tilbyr forbedret integrering av Direct2D, Direct3D, DirectCompute, og inkluderer DirectXMath, XAudio2, samt XInput framework XNA-biblioteker. Den inkluderer også stereoskopisk 3D-støtte.
DirectX 11.2 er en Windows 8.1 eksklusiv . Denne utviklingen av API gir støtte for WDDM 1.3, en dynamisk deling av ressurser mellom de forskjellige minnene på datamaskinen (kalt Tiled resources ) så vel som andre mindre evolusjoner.
DirectX 11.3 er en ny utvikling av API som vil ha visse funksjoner av DirectX 12, spesielt på nivå med Direct3D.
de 6. mars 2014, Microsoft har formalisert kunngjøringen av DirectX 12 på Game Developers Conference fra 17. til21. marsi San Francisco . Denne versjonen av DirectX er tilgjengelig på Windows 10 , Xbox One og Windows Phone og tilbyr tilgang på lavere nivå til grafikkretsressurser for å gi bedre ytelse og lavere strømforbruk. Midlene som brukes er å lette distribusjonen av ressursene som brukes, for bedre å utnytte multiprosesser og multigrafikkort.
Onsdag 20. mai 2020 kunngjorde Microsoft havnen til DirectX 12 under Linux-operativsystemet som en del av ønsket om å bringe Windows 10 nærmere Linux. Hvis kildekode er åpen kildekode og gratis å konsultere.
Selv om DirectX er en API designet for Windows- operativsystemet , er det drivere og programvarebiblioteker som gir en del av API-en på andre operativsystemer som:
Versjon | Utgivelsesdato | ||
---|---|---|---|
Major | Liten | Versjonskode | |
1 | 1.0 | 4.02.0095 | 30. september 1995 |
2 | 2.0 | 4.03.00.1096 | 1996 |
2.0a | 5. juni 1996 | ||
3 | 3.0 | 4.04.00.0068 | 15. september 1996 |
4.04.00.0069 | 1996 | ||
3.0a | 4.04.00.0070 | Desember 1996 | |
3.0b | |||
4 | 4.0 | Aldri ut | |
5 | 5.0 | 4.05.00.0155 (RC55) | 16. juli 1997 |
5.2 | 4.05.01.1600 (RC00) | 5. mai 1998 | |
4.05.01.1998 (RC0) | 25. juni 1998 | ||
6 | 6.0 | 4.06.00.0318 (RC3) | 7. august 1998 |
6.1 | 4.06.02.0436 (RC0) | 3. februar 1999 | |
6.1a | 4.06.03.0518 (RC0) | 5. mai 1999 | |
7 | 7.0 | 4.07.00.0700 | 22. september 1999 |
17. februar 2000 | |||
7.0a | 4.07.00.0716 | 8. mars 2000 | |
2000 | |||
7.1 | 4.07.01.3000 (RC1) | 14. september 2000 | |
8 | 8.0 | 4.08.00.0400 (RC10) | 12. november 2000 |
8.0a | 4.08.00.0400 (RC14) | 5. februar 2001 | |
8.1 | 4.08.01.0810 | 25. oktober 2001 | |
4.08.01.0881 (RC7) | 8. november 2001 | ||
8.1a | 4.08.01.0901 (RC?) | 2002 | |
8.1b | 4.08.01.0901 (RC7) | 25. juni 2002 | |
8.2 | 4.08.02.0134 (RC0) | 2002 | |
9 | 9.0 | 4.09.00.0900 (RC4) | 19. desember 2002 |
9.0a | 4.09.00.0901 (RC6) | 26. mars 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) | November 2008 | ||
4.09.00.0906 (RC0) | Mars 2009 | ||
4.09.00.090? (RC0) | juni 2010 | ||
10 | 10.0 | 6.00.6000.16386 | 30. november 2006 |
10.1 | 6.00.6001.18000 | 18. mars 2008 | |
11 | 11 | 6.01.7600.16385 | 22. juli 2009 |
11 | 6.01.7601.17514 | 6. februar 2011 | |
11.1 | 6.02.9200.16384 | 1 st August 2012 | |
11.2 | 6.03.9600.16384 | 17. oktober 2013 | |
12 | 12 | 10.00.10586.0000 | 29. juli 2015 |
10.00.14393.0000 | 24. august 2016 | ||
10.00.15063.0000 | 5. april 2017 | ||
10.00.17134.0001 | 10. april 2018 | ||
10.00.17763.0001 | 2. oktober 2018 | ||
10.00.18362.0387 | november 2019 |
APIer som Direct3D og DirectSound samhandler direkte med maskinvare gjennom drivere. Maskinvareprodusenter bør skrive disse driverne for en spesifikk versjon av DirectX 'Device Driver Interface' (eller DDI). Eldre versjoner av DirectX inkluderte en rekke DirectX-driveroppdateringer, men denne fremgangsmåten ble forlatt til fordel for Windows Update, som kan tillate brukere å laste ned bare drivere som er spesifikke for maskinvaren. Versjoner før DirectX 10 var ment å være bakoverkompatible med eldre drivere. Det var mulig å bruke nyere versjoner av DirectX med drivere skrevet for å støtte en eldre versjon av DDI. For eksempel kan et spill basert på Direct3D 9 kjøre på en maskin utstyrt med et kort som bare har en driver utviklet på tidspunktet for DirectX 6 . På den annen side med DirectX 10 på Vista, med tanke på omfanget av endringene og det faktum at visse funksjoner eksponert av API bare er tilgjengelig takket være den nye drivermodellen, er det umulig å bruke et program utviklet for denne versjonen driverløs DirectX tilsvarende den nye WDDM-drivermodellen. Flere versjoner av DirectX er forhåndsinstallert med mange versjoner av Windows for å støtte applikasjoner skrevet med eldre versjoner av dette API så lenge de ikke har blitt omskrevet for den nyeste versjonen og fortsetter å bli brukt.
I 2002 gjorde Microsoft tilgjengelig for utviklere en versjon av DirectX SDK som brakte .Net-samlinger som tillater bruk av DirectX fra administrert kode, enten det er i administrert C ++, C # eller et hvilket som helst annet språk som støttes av. Net Framework. Disse samlingene ble gruppert under navnet "Managed DirectX" (eller MDX), og fikk lov til å oppnå ytelse som ikke nødvendigvis måtte skamme seg over sammenligningen med det som var mulig å oppnå i innfødt C ++. Idesember 2005, Februar 2006, April 2006 og august 2006, Microsoft gjorde påfølgende oppdateringer av denne teknologien tilgjengelig for utviklere for å oppnå versjon 2.0 som aldri eksisterte bortsett fra i form av en betaversjon som utløp den5. oktober 2006.
I løpet av GDC i 2006 introduserte Microsoft XNA GSE Framework, ment som det nye biblioteket, slik at utviklere som ønsker å lage spill ved hjelp av et .Net-språk, får tilgang til DirectX-funksjoner. Dette rammeverket tar også sikte på å legge til rette for deres arbeid ved å gruppere sammen funksjoner som tidligere kunne bli spredt i forskjellige forsamlinger . Dette rammeverket støtter også kjøringen av applikasjoner produsert på Xbox 360 . RTM-versjonen ble levert den11. desember 2006, som en gratis nedlastbar pakke. I motsetning til DirectX eller Managed DirectX er ikke komponentene i XNA GSE Framework eller API- ene fra Xbox 360 (XInput, XACT, etc. ) forhåndsinstallert med noen versjoner av Windows, så det anbefales å installere dem samtidig enn noen annen. spill ved å bruke.
Tidlig i 2013 kunngjorde Microsoft slutten på XNA-utvikling og tilbaketrekning fra MVP-sertifiseringsprogrammet Most Valuable Professionals (MVP) 1 st april 2014. Open source-samfunnet tar deretter over med rammer som MonoGame (som en åpen kildekodeimplementering av XNA) og API-er som SharpDX som ringer til native DirectX-kode (som MDX gjorde).
DirectX-systemet er kompatibelt med alle Microsoft-operativsystemer, 32 bits (x86) og 64 bits (x64).
Det er flere biblioteker som ofte dekker noe av funksjonaliteten til DirectX. Ved å bruke en kombinasjon av disse kan du oppnå samme sett med funksjoner som DirectX, vi kan nevne SDL , Allegro , OpenMAX , OpenML , OpenGL , OpenAL , Vulkan , FMOD , etc. Disse bibliotekene kan ha fordelen av å gjøre det mulig å utvikle bærbare applikasjoner på andre operativsystemer enn Windows. Disse bibliotekene kommer hovedsakelig fra åpen kildekode- prosjekter .
Andre prosjekter, som en del av Wine , tar sikte på å tilby en alternativ implementering av det samme funksjonssettet.