DirectX 11 vs. DirectX 12: Vilka är skillnaderna och vilket bör du använda?
DirectX 12 lanserades tillsammans med Windows 10 i Microsofts DirectX 12 inledde en ny era för spelare och spelutvecklare. DirectX 12 kunde minska CPU-kostnaderna och samtidigt öka GPU-prestandan och gjorde sig snabbt ett namn.
Man kan undra om det verkligen är så enkelt att förbättra prestandan genom att migrera från DirectX 11 till dess efterföljare DirectX 12. För att få en tydligare förståelse för denna övergång är det klokt att undersöka de skillnader som finns mellan dessa två iterationer av DirectX.
Vad är Microsofts DirectX?
Sammanfattningsvis utgör Microsoft DirectX en uppsättning utvecklingsverktyg som underlättar utförandet av olika multimediaoperationer inom applikationer, särskilt spelprogram som distribueras över Windows- och Xbox-system. Som illustration kan det vara bra att kort gå in på begreppet Application Programming Interfaces eller API:er, som i huvudsak är en serie protokoll som möjliggör smidig kommunikation mellan olika komponenter i ett operativsystem och därigenom effektiviserar programmatiska interaktioner.
Ett API (Application Programming Interface) underlättar kommunikationen mellan flera program genom att utbyta data i ett strukturerat format. I grund och botten fungerar ett API som en medlare, vilket gör att olika system kan interagera sömlöst. Detta koncept undersöks närmare i vår omfattande undersökning av API:er, där vi fördjupar oss i deras olika funktioner och användning inom olika branscher. För att uttrycka det enkelt, tänk dig att du använder en telefon för att skicka och ta emot meddelanden; på samma sätt möjliggör ett API överföring av information från ett program till ett annat, vilket gör det möjligt för användare att komma åt och bearbeta data på ett effektivt sätt.
Vilka är skillnaderna mellan DirectX 11 och DirectX 12?
DirectX 11 och DirectX 12 representerar olika iterationer i utvecklingen av Microsofts grafik-API för spelutveckling. Den främsta skillnaden ligger i deras interaktion med datorns hårdvaruarkitektur. Medan det var vanligt att spel som utvecklades med DirectX 11 endast utnyttjade två till fyra CPU-kärnor, där en kärna fungerade som kommunikationspunkt mellan CPU och GPU, introducerar DirectX 12 förbättrade multithreading-funktioner som möjliggör effektivare resursallokering mellan flera kärnor. Detta resulterar i förbättrad prestanda och jämnare rendering i applikationer som utnyttjar detta uppdaterade grafiska gränssnitt.
För att optimera prestanda i speltillämpningar är det viktigt att programvaran fördelar resurserna effektivt. Detta innebär att alla tillgängliga processorenheter utnyttjas till sin fulla potential samtidigt som kommunikationen mellan dem är effektiv. I detta avseende har vissa operativsystem implementerat mekanismer som gör det möjligt att fördela beräkningsuppgifter mellan olika hårdvarukomponenter, t.ex. processorer och grafikkort. Genom att utnyttja kapaciteten hos flera kärnor förbättrar dessa strategier systemets övergripande prestanda och underlättar sömlös interaktion mellan den centrala processorenheten (CPU) och den grafiska processorenheten (GPU).
En av de mest anmärkningsvärda egenskaperna hos DirectX 12 är att den innehåller avancerade funktioner som asynkron beräkning och pipeline state objects (PSO), som avsevärt förbättrar effektiviteten hos grafikprocessorenheter (GPU) genom att möjliggöra samtidig körning av flera uppgifter. Denna teknik gör det därför möjligt att utnyttja en GPU:s kapacitet optimalt och därmed uppnå dess maximala prestandapotential.
Förutom att rendera grafiskt innehåll kan grafikprocessorer (GPU) hantera en mängd olika uppgifter, inklusive exekvering av algoritmer för maskininlärning. Men med DirectX 11 är GPU:n begränsad till att bara utföra en av dessa uppgifter vid varje givet tillfälle och i en förutbestämd sekvens. Denna begränsning leder till ett suboptimalt utnyttjande av GPU-resurserna, vilket påverkar den totala prestandan negativt.
Tänk på metaforen med en servitör på en restaurang. Servitören inväntar beställningen och börjar med att fråga vad gästerna föredrar att dricka. När gästerna har fått sina drycker fortsätter servitören med att fråga om huvudrätten. Denna steg-för-steg-process är effektiv, men saknar optimal effektivitet på grund av sin sekventiella natur.
Inom datavetenskapen är det möjligt för olika GPU-tillgångar (Graphics Processing Unit) att hantera enskilda beställningar från restauranggäster. Medan gästerna väntar på sin måltid är dessa GPU-resurser som är avsedda för beställningsprocessen inte upptagna förrän de måste behandla gästens begäran om sin förrätt. Genom att utnyttja DirectX 12:s asynkrona beräkningsarkitektur kan personalen effektivt ta emot alla beställningar samtidigt, ungefär som den snabba service som erbjuds av populära snabbmatsställen. Detta tillvägagångssätt optimerar utnyttjandet av GPU-tillgångar och förbättrar den övergripande prestandan under spelandet.
DirectX 12 introducerar Pipeline State Objects (PSOs) som ger utvecklare större kontroll över sin grafikprocessorkapacitet. I tidigare versioner som DirectX 11 var hårdvaran ensam ansvarig för att tolka och rendera grafiska data genom grafikpipelinen, som består av en serie in- och utgångar som resulterar i rendering av bildrutor. Grafikpipelinen utgjorde en grund för effektiv rendering, men den var inte helt felfri.
Den aktuella konfigurationen omfattar en rad olika tillstånd, t.ex. rasteriseringstillstånd, blandningstillstånd och djupstenciltillstånd, utöver flera andra. Inom DirectX 11 finns det ömsesidiga beroenden mellan dessa olika tillstånd, vilket gör att de sekventiellt är beroende av varandras slutförande. Följaktligen underutnyttjas GPU:n medan CPU:n upplever ökad overhead, vilket har en negativ inverkan på den totala prestandan.
DirectX 12 löste detta problem genom att introducera Primary Surface Objects (PSO), som representerar den övergripande statusen för grafikpipelinen. PSO:erna är som en behållare och innehåller alla nödvändiga komponenter som krävs för att rendera en bild. Genom att använda PSO:er kan GPU:n utföra förebyggande bearbetning av ömsesidigt beroende tillstånd i stället för att upprepade gånger beräkna dem baserat på den aktiva grafikpipelinen.
DirectX 12 uppvisar en anmärkningsvärd minskning av CPU-belastningen jämfört med sin föregångare DirectX 11, vilket resulterar i en förbättring av den övergripande systemeffektiviteten. Microsoft har rapporterat att det nya API:et kan minska CPU-användningen med upp till hälften och öka GPU-produktiviteten med ungefär en femtedel. Det är dock viktigt att notera att dessa optimeringar kan variera beroende på olika faktorer som maskinvarukonfiguration och applikationsspecifikationer.
Varför det inte är helt enkelt att byta från DirectX 11 till DirectX 12
Introduktionen av DirectX 11 för Windows Vista ägde rum den 27 oktober. Därefter släpptes DirectX 12 2015, vilket innebär att det är sex år mellan DirectX 11 och DirectX 12. Under dessa år har många videospel skapats med DirectX 11 som grund. Övergången från DirectX 11 till DirectX 12 innebär dock stora utmaningar.
DirectX 11 är ett avancerat programmeringsgränssnitt som förenklar utvecklingen genom att tillhandahålla funktionalitet på högre nivå. Detta resulterar i effektivare och mer visuellt tilltalande videospel. DirectX 12 däremot arbetar på en lägre abstraktionsnivå och kräver specialkunskaper för att kunna användas effektivt. Detta tillvägagångssätt ger dock större kontroll över prestandaoptimeringar på detaljerad nivå.
Effektiviteten hos ett spel som skapats med DirectX 12 kan vara beroende av utvecklarens kunskaper om API:n. Även om DirectX 12 ger vissa förbättringar beror slutresultatet på programmerarens förmåga att utnyttja det på ett effektivt sätt. Många programmerare väljer därför API:er på högre nivå, t.ex. DirectX 11, eftersom de är enklare att använda och mer lättillgängliga.
DX 11 vs. DX 12: Vilket bör du välja?
Möjligheten att använda DirectX 12 i Guild Wars 2 beror på flera faktorer, inklusive det specifika spelet som spelas. I det här fallet är Guild Wars 2 utformat för att fungera uteslutande med DirectX 11, trots potentialen för kompatibilitet med DirectX 12 baserat på användarens operativsystem och hårdvarukapacitet. Valet att begränsa spelet till DirectX 11 ligger dock endast hos utvecklarna på ArenaNet.
Image Credit: Martin Kerstein/ Guild Wars 2
Det är värt att notera att ArenaNet behövde nio år för att övergå från DirectX 9 till DirectX Vissa videospel är dock utrustade med kapacitet att fungera samtidigt med både DirectX 11 och DirectX 12, såsom Fortnite, vilket användare kan hänvisa till vår omfattande guide om Fortnite för ytterligare insikter. Dessutom erbjuder populära titlar som Battlefield 5, Shadow of the Tomb Raider och andra också denna kompatibilitet, vilket gör att spelare enkelt kan växla mellan DirectX 11 och DirectX 12 i spelets inställningar.
Det är troligt att det faktum att vissa spel är kompatibla med både DirectX 11 och 12 har lett till din förfrågan om deras inverkan på spelprestanda. Specifikt kanske du är nyfiken på om valet av DX 11 eller DX 12 resulterar i förbättrad prestanda i dessa spel. För att besvara denna fråga har vi förberett en video som jämför effekterna av varje version av DirectX i olika titlar och presenterar data som genomsnittlig FPS, CPU-användning och GPU-användning med hjälp av en AMD Ryzen 3600, Nvidia GeForce RTX 3060 Ti och 16 GB DDR4 RAM.
Resultaten framkallar en känsla av förvåning eftersom det ofta är minimal visuell skillnad mellan DX 11 och DX 12, även om de släpptes med flera års mellanrum. Dessutom är det anmärkningsvärt att GPU- och CPU-användningen tenderar att vara lägre för DX 12-iterationerna av varje titel jämfört med deras respektive DX 11-motsvarigheter.
Att välja en grafikprocessor (GPU) som är kompatibel med antingen DirectX 11 eller DirectX 12 är avgörande när man fattar ett sådant beslut. Många moderna GPU:er har stöd för DirectX 12, men vissa äldre GPU:er, som Radeon HD som släpptes 2008, kanske inte har den kapacitet som krävs för att hantera nyare titlar som är starkt beroende av dessa API:er. Att använda en föråldrad GPU kan begränsa ens möjligheter att njuta av nya spelupplevelser, på grund av dess begränsade kompatibilitet med DirectX 11 och DirectX 12.
Är DirectX 12 rätt val för dig?
Övergången från DirectX 11 till DirectX 12 är inte helt okomplicerad, eftersom den beror på flera variabler, t.ex. maskinvarukonfiguration, programkompatibilitet, operativsystem och om det aktuella spelet stöder båda versionerna eller inte. Följaktligen måste man noga överväga saken innan man drar någon slutsats, som förväntas gälla även för efterföljande versioner av DirectX.