Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

DirectX 12 släpptes tillsammans med Windows 10 2015. Med lanseringen inledde Microsofts DirectX 12 en ny era för spelare och spelutvecklare. DirectX 12, som kan minska CPU-overhead samtidigt som den ökar GPU-prestanda, gjorde sig snabbt ett namn.

Men är det verkligen lika enkelt att öka din prestanda som att byta från DirectX 11 till DirectX 12? Låt oss ta reda på det genom att titta på skillnaderna mellan DirectX 11 och 12.

Vad är Microsofts DirectX?

Som förklarat i vår översikt över Microsoft DirectX, DirectX är en samling API: er som används för att hantera uppgifter relaterade till multimedia. Detta inkluderar spelprogrammering på Microsoft-baserade plattformar som Windows och Xbox. För att ge lite sammanhang, låt oss kort prata om API: er.

Ett applikationsprogrammeringsgränssnitt (API) gör det möjligt för två eller flera datorprogram att kommunicera med varandra, vilket vi diskuterar i

instagram viewer
vår översikt över API: er. Tänk på det som en telefon. Om din mamma skickar ett sms till dig med en inköpslista kommer din telefon att ta emot den informationen och visa den åt dig. Det är i grunden ett API.

Vad är skillnaderna mellan DirectX 11 och DirectX 12?

Så, vad är skillnaderna mellan DirectX 11 och DirectX 12? Enkelt uttryckt är DirectX 12 den senaste versionen av DirectX. En av de mest märkbara skillnaderna mellan de två är hur de interagerar med din hårdvara. De flesta spel utvecklade med DirectX 11 använder bara mellan två och fyra CPU-kärnor. En av dessa kärnor är vanligtvis dedikerad till att tala om för GPU: n vad den ska göra.

Spelet använder sedan de återstående kärnorna för att hantera olika CPU-intensiva inställningar som ett spels partiklar eller dragavstånd. Å andra sidan sprider DirectX 12 en CPU: s arbetsbelastning över flera kärnor och låter också varje kärna prata med GPU: n samtidigt.

DirectX 12 kommer också med några snygga klockor och visselpipor. Detta inkluderar asynkrona beräkningar och pipeline-tillståndsobjekt (PSOs). Asynkron beräkning ökar GPU-användningen genom att tillåta flera arbetsbelastningar att arbeta parallellt. Detta låser upp din GPU: s fulla potential.

Bortsett från grafikrendering är din GPU ansvarig för att hantera ett brett utbud av andra uppgifter, som att köra maskininlärningsalgoritmer. Med DirectX 11 kan grafikprocessorn bara utföra en av dessa uppgifter åt gången och i en viss ordning. När detta inträffar får prestandan ett slag eftersom alla dina GPU-resurser inte används.

Tänk på det som en servitör på en restaurang. När en servitör först tar din beställning frågar de dig vad du vill dricka först. När du får dina drycker frågar de dig vad du vill ha till huvudrätten. Din beställning tas i steg. Servitören kommer inte att fråga dig vad du vill ha till efterrätt innan du har ätit din huvudrätt. Även om detta är effektivt, är det inte så effektivt som det skulle kunna vara.

Vid datoranvändning skulle var och en av servitörens uppgifter hanteras av en annan GPU-resurs. Tills du får din dryck, skulle GPU-resurserna som behövs för att ta din huvudrättsbeställning vara inaktiva. Med DirectX 12:s asynkrona datoranvändning skulle servitören kunna ta din beställning på en gång som i en snabbmatskedja. Detta maximerar GPU-användningen och förbättrar din spelprestanda.

DirectX 12 introducerade också PSO: er. Med DirectX 11, när ett spels geometri skickas till GPU: n till renderas, är en mängd olika hårdvaruinställningar ansvariga för att tolka och rendera detta data. Detta kallas för grafikpipeline och är flödet av dataingångar och utdata som uppstår när din GPU renderar ramar. Dock är DirectX 11:s grafikpipeline inte perfekt.

Denna pipeline innehåller en samling olika tillstånd, inklusive rasteriseringstillstånd, blandningstillstånd och djupstenciltillstånd, bland andra komponenter. I DirectX 11 finns det beroenden mellan dessa olika tillstånd. Som ett resultat kan ett tillstånd inte slutföras förrän det tidigare tillståndet har definierats. Detta minskar GPU-användningen och ökar CPU-overheaden på bekostnad av prestanda.

För att komma runt detta introducerade DirectX 12 PSO: er, som är objekt som beskriver tillståndet för hela grafikpipelinen. PSO: er är som en flaska som innehåller de olika tillstånden och komponenterna som behövs för att skapa en bild. Detta gör att GPU: n kan förbehandla alla beroende tillstånd istället för att kontinuerligt behöva beräkna om tillstånd baserat på den aktuella grafikpipelinen.

Detta minskar avsevärt CPU-overheaden i DirectX 11 och förbättrar prestandan. Så, hur ser denna skillnad ut egentligen? Tja, enligt Microsoft minskar DirectX 12 CPU-overhead med upp till 50 procent och förbättrar GPU-prestanda med så mycket som 20 procent. Även om det är några betydande förbättringar, betyder det inte att du kommer att se samma resultat.

Varför det inte är enkelt att byta från DirextX 11 till DirectX 12

DirectX 11 släpptes först för Windows Vista den 27 oktober 2009. Så, med DirectX 12 som följde 2015, är det ett sexårigt gap mellan DirectX 11 och DirectX 12. Under denna tid har tusentals spel utvecklats med DirectX 11. Tyvärr är övergången från DirectX 11 till DirectX 12 allt annat än lätt.

DirectX 11 är vad som kallas ett högnivå-API. Enkelt uttryckt är API: er på hög nivå lättare för utvecklare att arbeta med. Resultatet är stabila, polerade och spelbara spel. Å andra sidan är DirectX 12 ett lågnivå-API och är en annan best jämfört med DirectX 11. Även om det tillåter utvecklare att finjustera optimering på en granulär nivå, kräver det också omfattande kunskap att använda.

Med det sagt kan ett spel utvecklat i DirectX 12 sluta med sämre prestanda beroende på utvecklarens kunskap om API: et. Det finns förbättringar som kommer med DirectX 12, men det handlar verkligen om hur väl en utvecklare kan implementera det. Av denna anledning väljer många utvecklare att hålla sig till API: er på hög nivå som DirectX 11.

Ska du välja DirectX 11 eller DirectX 12?

Svaret beror på några saker, som vilket spel du försöker köra. Till exempel, Guild Wars 2 körs på DirectX 11. Även om ditt operativsystem och hårdvara använder DirectX 12, kommer du inte att ha möjlighet att välja DirectX 11 i Guild Wars 2 eftersom spelet inte stöder det. Detta är helt och hållet utvecklaren ArenaNets beslut.

Bildkredit: Martin Kerstein/Guild Wars 2

Tro det eller ej, det tog nio år för ArenaNet att byta från DirectX 9 till DirectX 11. Det finns dock några spel som stöder både DirectX 11 och DirectX 12. Fortnite (läs vårt Fortnite-fuskblad), till exempel. Genom spelets inställningar kan användare växla mellan båda versionerna. För att sammanfatta, inte alla spel stöder både DirectX 11 och DirectX 12. För de som gör det, växla mellan de två och bestäm själv vilken som fungerar bäst på din PC.

Om du kan välja mellan DirectX 11 och DirectX 12 beror också på din hårdvara. Nästan vilken modern GPU som helst kommer att stödja DirectX 12, men detsamma kan inte sägas för äldre GPU: er som Radeon HD 4870. Släppt 2008, denna GPU stöder endast upp till DirectX 10. Detta betyder att det inte skulle kunna köra de flesta moderna spel, som körs med DirectX 11 och DirectX 12.

Är DirectX 12 rätt val för dig?

Allt som allt är att byta från DirectX 11 till DirectX 12 inte så svartvitt som det låter. Det beror på en mängd olika faktorer som hårdvara, mjukvara, operativsystem och om ett spel överhuvudtaget stöder båda. Alla dessa måste övervägas innan man fattar ett beslut, och detta kommer sannolikt att gälla även för framtida generationer av DirectX.