Lezers zoals jij steunen MUO. Wanneer u een aankoop doet via links op onze site, kunnen we een aangesloten commissie verdienen. Lees verder.

DirectX 12 werd uitgebracht samen met Windows 10 in 2015. Met de release luidde DirectX 12 van Microsoft een nieuw tijdperk in voor gamers en game-ontwikkelaars. In staat om de CPU-overhead te verminderen en tegelijkertijd de GPU-prestaties te verbeteren, maakte DirectX 12 snel naam.

Maar is het verbeteren van uw prestaties echt zo eenvoudig als het overstappen van DirectX 11 naar DirectX 12? Laten we het uitzoeken door te kijken naar de verschillen tussen DirectX 11 en 12.

Wat is DirectX van Microsoft?

Zoals uitgelegd in ons overzicht van Microsoft DirectX, DirectX is een verzameling API's die worden gebruikt voor het afhandelen van taken met betrekking tot multimedia. Dit omvat het programmeren van games op op Microsoft gebaseerde platforms zoals Windows en Xbox. Laten we, om enige context te geven, kort praten over API's.

Een Application Programming Interface (API) maakt het mogelijk dat twee of meer computerprogramma's met elkaar kunnen communiceren, dat bespreken we in

instagram viewer
ons overzicht van API's. Zie het als een telefoon. Als je moeder je een sms stuurt met een boodschappenlijstje, zal je telefoon die gegevens ontvangen en voor je weergeven. Dat is eigenlijk een API.

Wat zijn de verschillen tussen DirectX 11 en DirectX 12?

Wat zijn de verschillen tussen DirectX 11 en DirectX 12? Simpel gezegd, DirectX 12 is de nieuwste versie van DirectX. Een van de meest opvallende verschillen tussen de twee is hoe ze omgaan met uw hardware. De meeste games die met DirectX 11 zijn ontwikkeld, gebruiken er slechts twee tot vier CPU-kernen. Een van deze kernen is meestal bedoeld om de GPU te vertellen wat hij moet doen.

De game gebruikt vervolgens de resterende kernen om verschillende CPU-intensieve instellingen aan te kunnen, zoals de deeltjes van een game of de tekenafstand. Aan de andere kant verdeelt DirectX 12 de werklast van een CPU over meerdere kernen en kan elke kern tegelijkertijd met de GPU praten.

DirectX 12 wordt ook geleverd met een aantal mooie toeters en bellen. Dit omvat asynchronous computing en pipeline state objects (PSO's). Asynchronous computing verhoogt het GPU-gebruik door meerdere workloads parallel te laten werken. Dit ontgrendelt in wezen het volledige potentieel van uw GPU.

Afgezien van grafische weergave, is uw GPU verantwoordelijk voor het afhandelen van een breed scala aan andere taken, zoals het uitvoeren van algoritmen voor machine learning. Met DirectX 11 kan de GPU slechts één van deze taken tegelijk en in een bepaalde volgorde uitvoeren. Wanneer dit gebeurt, nemen de prestaties af omdat niet al uw GPU-bronnen worden gebruikt.

Zie het als een ober in een restaurant. Als een ober je bestelling opneemt, vragen ze je eerst wat je wilt drinken. Zodra je je drankjes hebt ontvangen, vragen ze je wat je wilt voor het hoofdgerecht. Uw bestelling wordt in stappen uitgevoerd. De ober gaat je niet vragen wat je als toetje wilt voordat je je hoofdgerecht hebt gehad. Hoewel dit effectief is, is het niet zo efficiënt als het zou kunnen zijn.

Bij computers zou elk van de taken van de ober worden afgehandeld door een andere GPU-bron. Totdat u uw drankje ontvangt, zijn de GPU-bronnen die nodig zijn om uw bestelling voor het hoofdgerecht op te nemen, inactief. Met het asynchrone computergebruik van DirectX 12 zou de ober uw bestelling in één keer kunnen opnemen, net als in een fastfoodketen. Dit maximaliseert het GPU-gebruik en verbetert je spelprestaties.

DirectX 12 introduceerde ook PSO's. Met DirectX 11, wanneer de geometrie van een game wordt voorgelegd aan de GPU worden weergegeven, zijn verschillende hardware-instellingen verantwoordelijk voor de interpretatie en weergave hiervan gegevens. Dit wordt de grafische pijplijn genoemd en is de stroom van gegevensinvoer en -uitvoer die plaatsvindt wanneer uw GPU frames weergeeft. De grafische pijplijn van DirectX 11 is echter niet perfect.

Deze pijp lijn bevat een verzameling van verschillende statussen, waaronder de rasterstatus, de blendstatus en de dieptestencilstatus, naast andere componenten. In DirectX 11 zijn er afhankelijkheden tussen deze verschillende statussen. Als gevolg hiervan kan de ene status niet worden voltooid totdat de vorige status is gedefinieerd. Dit vermindert het GPU-gebruik en verhoogt de CPU-overhead ten koste van de prestaties.

Om dit te omzeilen, introduceerde DirectX 12 PSO's, dit zijn objecten die de status van de gehele grafische pijplijn beschrijven. PSO's zijn als een fles die de verschillende toestanden en componenten bevat die nodig zijn om een ​​beeld te creëren. Hierdoor kan de GPU elke afhankelijke toestand vooraf verwerken in plaats van voortdurend toestanden opnieuw te moeten berekenen op basis van de huidige grafische pijplijn.

Dit vermindert de CPU-overhead in DirectX 11 aanzienlijk en verbetert de prestaties. Dus, hoe ziet dit verschil er eigenlijk uit? Welnu, volgens Microsoft vermindert DirectX 12 de CPU-overhead met tot wel 50 procent en verbetert de GPU-prestaties met maar liefst 20 procent. Hoewel dit enkele substantiële verbeteringen zijn, betekent dit niet dat u dezelfde resultaten zult zien.

Waarom overstappen van DirextX 11 naar DirectX 12 niet eenvoudig is

DirectX 11 werd voor het eerst uitgebracht voor Windows Vista op 27 oktober 2009. Dus, met DirectX 12 in 2015, is dat een kloof van zes jaar tussen DirectX 11 en DirectX 12. Gedurende deze tijd zijn er duizenden games ontwikkeld met DirectX 11. Helaas is de overstap van DirectX 11 naar DirectX 12 allesbehalve eenvoudig.

DirectX 11 is wat een API op hoog niveau wordt genoemd. Simpel gezegd, API's op hoog niveau zijn gemakkelijker voor ontwikkelaars om mee te werken. Het resultaat is stabiele, gepolijste en speelbare games. Aan de andere kant is DirectX 12 een low-level API en een ander beest vergeleken met DirectX 11. Hoewel het ontwikkelaars in staat stelt om optimalisatie op een gedetailleerd niveau te verfijnen, vereist het ook uitgebreide kennis om te gebruiken.

Dat gezegd hebbende, kan een game die is ontwikkeld in DirectX 12 slechter presteren, afhankelijk van de kennis van de ontwikkelaar van de API. Er zijn verbeteringen die worden geleverd met DirectX 12, maar het komt er echt op aan hoe goed een ontwikkelaar het kan implementeren. Om deze reden kiezen veel ontwikkelaars ervoor om vast te houden aan hoogwaardige API's zoals DirectX 11.

Moet u DirectX 11 of DirectX 12 kiezen?

Het antwoord hangt van een paar dingen af, zoals welk spel je probeert uit te voeren. Guild Wars 2 draait bijvoorbeeld op DirectX 11. Zelfs als je besturingssysteem en hardware DirectX 12 gebruiken, heb je niet de mogelijkheid om DirectX 11 te selecteren in Guild Wars 2 omdat de game dit niet ondersteunt. Dit is volledig de beslissing van de ontwikkelaar, ArenaNet.

Afbeelding tegoed: Martin Kerstein/Gildeoorlogen 2

Geloof het of niet, het duurde negen jaar voordat ArenaNet de overstap maakte van DirectX 9 naar DirectX 11. Er zijn echter enkele games die zowel DirectX 11 als DirectX 12 ondersteunen. Fortnite (lees ons Fortnite-spiekbriefje), Bijvoorbeeld. Via de instellingen van het spel kunnen gebruikers schakelen tussen beide versies. Om samen te vatten, ondersteunt niet elke game zowel DirectX 11 als DirectX 12. Voor degenen die dat wel doen, schakel tussen de twee en bepaal zelf welke beter presteert op uw pc.

Of je kunt kiezen tussen DirectX 11 en DirectX 12 hangt ook af van je hardware. Vrijwel elke moderne GPU ondersteunt DirectX 12, maar hetzelfde kan niet gezegd worden voor oudere GPU's zoals de Radeon HD 4870. Uitgebracht in 2008, ondersteunt deze GPU alleen tot DirectX 10. Dit betekent dat het niet in staat zou zijn om de meeste moderne games uit te voeren, die draaien met DirectX 11 en DirectX 12.

Is DirectX 12 de juiste keuze voor u?

Al met al is de overstap van DirectX 11 naar DirectX 12 niet zo zwart-wit als het klinkt. Het hangt af van verschillende factoren, zoals hardware, software, besturingssysteem en of een game beide überhaupt ondersteunt. Deze moeten allemaal worden overwogen voordat een beslissing wordt genomen, en dit zal waarschijnlijk ook gelden voor toekomstige generaties DirectX.