Contents

DirectX 11 vs. DirectX 12: wat zijn de verschillen en welke moet je gebruiken?

DirectX 12 werd samen met Windows 10 uitgebracht in Met de release luidde DirectX 12 van Microsoft een nieuw tijdperk in voor gamers en gameontwikkelaars. DirectX 12 is in staat om de CPU-overhead te verminderen en de GPU-prestaties te verbeteren en maakte al snel naam.

Je kunt je inderdaad afvragen of het verbeteren van prestaties zo eenvoudig kan zijn als de migratie van DirectX 11 naar de opvolger, DirectX 12. Om deze overgang beter te begrijpen, is het verstandig om de verschillen tussen deze twee versies van DirectX te onderzoeken.

Wat is DirectX van Microsoft?

/nl/images/untitled-design-1.jpg

Kort samengevat is Microsoft DirectX een set software-ontwikkeltools die de uitvoering van verschillende multimediale bewerkingen binnen toepassingen vergemakkelijken, met name spelprogramma’s die worden geïmplementeerd op Windows- en Xbox-systemen. Ter illustratie kan het nuttig zijn om even in te gaan op het concept van Application Programming Interfaces of API’s, die in wezen een reeks protocollen zijn die een soepele communicatie mogelijk maken tussen verschillende onderdelen van een besturingssysteem, waardoor programmatische interacties worden gestroomlijnd.

Een Application Programming Interface (API) vergemakkelijkt de communicatie tussen meerdere softwaretoepassingen door gegevens in een gestructureerd formaat uit te wisselen. In essentie werkt een API als een mediator, waardoor verschillende systemen naadloos met elkaar kunnen samenwerken. Dit concept wordt verder uitgediept in ons uitgebreide onderzoek naar API’s, waarin we dieper ingaan op hun verschillende functionaliteiten en gebruik in verschillende sectoren. Om het eenvoudig te zeggen: stel je voor dat je een telefoon gebruikt om berichten te verzenden en te ontvangen; op dezelfde manier maakt een API de overdracht van informatie van het ene programma naar het andere mogelijk, zodat gebruikers gegevens efficiënt kunnen openen en verwerken.

Wat zijn de verschillen tussen DirectX 11 en DirectX 12?

DirectX 11 en DirectX 12 zijn verschillende iteraties in de evolutie van Microsofts grafische API voor gameontwikkeling. Het belangrijkste verschil ligt in hun interactie met de hardwarearchitectuur van een computer. Terwijl games die werden ontwikkeld met DirectX 11 doorgaans gebruikmaakten van slechts twee tot vier CPU-kernen, waarbij één kern diende als communicatiepunt tussen de CPU en GPU, introduceert DirectX 12 verbeterde multithreading-mogelijkheden waarmee bronnen efficiënter kunnen worden toegewezen aan meerdere kernen. Dit resulteert in betere prestaties en vloeiendere rendering in toepassingen die gebruik maken van deze bijgewerkte grafische interface.

Om de prestaties van gametoepassingen te optimaliseren, is het belangrijk dat de software bronnen effectief toewijst. Dit betekent dat alle beschikbare verwerkingseenheden optimaal moeten worden gebruikt en dat de communicatie tussen deze eenheden efficiënt moet verlopen. In dit opzicht hebben bepaalde besturingssystemen mechanismen geïmplementeerd die het mogelijk maken om rekentaken te verdelen over verschillende hardwarecomponenten, zoals processors en grafische kaarten. Door de mogelijkheden van meerdere kernen te benutten, verbeteren deze strategieën de algehele systeemprestaties en wordt naadloze interactie tussen de centrale verwerkingseenheid (CPU) en de grafische verwerkingseenheid (GPU) mogelijk.

Een van de opmerkelijke kenmerken van DirectX 12 is de integratie van geavanceerde functies zoals asynchroon rekenen en pipeline state objects (PSO’s), die de efficiëntie van grafische verwerkingseenheden (GPU’s) aanzienlijk verbeteren door gelijktijdige uitvoering van meerdere taken mogelijk te maken. Met deze technologie kunnen de mogelijkheden van een GPU dus optimaal worden benut, waardoor het maximale prestatiepotentieel wordt gerealiseerd.

Naast het renderen van grafische inhoud zijn grafische verwerkingseenheden (GPU’s) in staat om een breed scala aan taken uit te voeren, waaronder het uitvoeren van algoritmen voor machinaal leren. Met DirectX 11 is de GPU echter beperkt tot het uitvoeren van slechts één van deze taken op elk moment en in een vooraf bepaalde volgorde. Deze beperking resulteert in suboptimaal gebruik van GPU-bronnen, wat een negatieve invloed heeft op de algehele prestaties.

Beschouw de metafoor van een ober in een restaurant. In afwachting van iemands bestelling vraagt de ober eerst naar het drankje van zijn voorkeur. Na ontvangst van het drankje vraagt de ober naar het hoofdgerecht. Dit stapsgewijze proces is, ondanks zijn doeltreffendheid, niet optimaal door zijn opeenvolgende aard.

Op het gebied van informatica is het mogelijk om verschillende grafische verwerkingseenheden (GPU’s) te gebruiken om individuele bestellingen van restaurantbezoekers te beheren. In afwachting van hun maaltijd blijven deze GPU-resources voor het bestelproces onbezet tot ze nodig zijn om het verzoek van de klant voor zijn voorgerecht te verwerken. Door gebruik te maken van de mogelijkheden van de asynchrone rekenarchitectuur van DirectX 12 kan het bedienend personeel efficiënt alle bestellingen tegelijkertijd verzamelen, net zoals de snelle service die wordt geboden door populaire fastfoodrestaurants. Deze aanpak optimaliseert het gebruik van GPU-middelen en verbetert de algehele prestaties tijdens het gamen.

DirectX 12 introduceert Pipeline State Objects (PSO’s) waarmee ontwikkelaars meer controle krijgen over hun grafische verwerkingsmogelijkheden. In eerdere versies, zoals DirectX 11, was de hardware alleen verantwoordelijk voor het interpreteren en renderen van grafische gegevens via de grafische pijplijn, die bestaat uit een reeks in- en uitgangen die resulteren in frame-renderingen. Hoewel de grafische pijplijn een basis vormde voor efficiënte rendering, was het niet zonder onvolkomenheden.

De huidige configuratie omvat een reeks verschillende toestanden, zoals de rasterize-status, blend-status en depth stencil-status, naast verschillende andere. Binnen DirectX 11 bestaan er onderlinge afhankelijkheden tussen deze verschillende toestanden, waardoor ze opeenvolgend afhankelijk zijn van elkaars voltooiing. Als gevolg hiervan blijft de GPU onderbenut terwijl de CPU meer overhead ondervindt, wat een negatieve invloed heeft op de algehele prestaties.

DirectX 12 loste dit probleem op door de introductie van Primary Surface Objects (PSO’s), die de algemene status van de grafische pijplijn weergeven. Opgevat als een container, omvatten PSOs alle noodzakelijke componenten die nodig zijn voor het renderen van een afbeelding. Door gebruik te maken van PSO’s kan de GPU preventieve verwerking uitvoeren van onderling afhankelijke toestanden in plaats van deze herhaaldelijk te berekenen op basis van de actieve grafische pijplijn.

DirectX 12 vertoont inderdaad een opmerkelijke afname in CPU-belasting in vergelijking met zijn voorganger, DirectX 11, wat resulteert in een verbetering van de algehele systeemefficiëntie. Microsoft heeft zelfs gemeld dat de nieuwe API het CPU-gebruik kan halveren en de GPU-productiviteit met ongeveer een vijfde kan verhogen. Het is echter belangrijk op te merken dat deze optimalisaties kunnen variëren afhankelijk van verschillende factoren zoals hardwareconfiguratie en specifieke toepassingen.

Waarom overschakelen van DirectX 11 naar DirectX 12 niet eenvoudig is

De introductie van DirectX 11 voor Windows Vista vond plaats op 27 oktober. De release van DirectX 12 vond vervolgens plaats in 2015, wat resulteerde in een interval van zes jaar tussen DirectX 11 en DirectX 12. In de loop van deze jaren zijn er talloze videogames gemaakt met DirectX 11 als basis. De overgang van DirectX 11 naar DirectX 12 brengt echter aanzienlijke uitdagingen met zich mee.

DirectX 11 is een geavanceerde programmeerinterface die de ontwikkeling vereenvoudigt door functionaliteit op een hoger niveau te bieden. Dit resulteert in efficiëntere en visueel aantrekkelijkere videogames. DirectX 12 werkt daarentegen op een lager abstractieniveau, waardoor gespecialiseerde expertise nodig is om het effectief te gebruiken. Deze aanpak biedt echter meer controle over prestatieoptimalisaties op detailniveau.

De doeltreffendheid van een spel dat is gemaakt met DirectX 12 kan afhangen van de vaardigheid van de ontwikkelaar met betrekking tot de API. Hoewel DirectX 12 bepaalde verbeteringen biedt, hangt het uiteindelijke resultaat af van het vermogen van de programmeur om er effectief gebruik van te maken. Daarom kiezen veel programmeurs voor API’s op een hoger niveau, zoals DirectX 11, vanwege hun gebruiksgemak en toegankelijkheid.

DX 11 vs. DX 12: welke moet je kiezen?

De haalbaarheid van het gebruik van DirectX 12 in Guild Wars 2 hangt af van verschillende factoren, waaronder het specifieke spel dat wordt gespeeld. In dit geval is Guild Wars 2 ontworpen om uitsluitend met DirectX 11 te werken, ondanks de mogelijke compatibiliteit met DirectX 12 op basis van het besturingssysteem en de hardwaremogelijkheden van de gebruiker. De keuze om het spel te beperken tot DirectX 11 ligt echter alleen bij de ontwikkelaars van ArenaNet.

/nl/images/untitled-design-3.jpg Afbeelding Credit: Martin Kerstein/ Guild Wars 2

Het is inderdaad de moeite waard om op te merken dat ArenaNet een aanzienlijke periode van negen jaar nodig had om van DirectX 9 naar DirectX over te stappen. Bepaalde videogames zijn echter uitgerust met de mogelijkheid om gelijktijdig met zowel DirectX 11 als DirectX 12 te werken, zoals Fortnite, dat gebruikers kunnen raadplegen in onze uitgebreide gids over Fortnite voor meer inzicht. Daarnaast bieden populaire titels zoals Battlefield 5, Shadow of the Tomb Raider en andere ook deze compatibiliteit, zodat spelers eenvoudig kunnen schakelen tussen DirectX 11 en DirectX 12 binnen de instellingen van hun spel.

Het feit dat bepaalde games compatibel zijn met zowel DirectX 11 als DirectX 12 heeft waarschijnlijk geleid tot je vraag over de invloed ervan op de prestaties in de game. Je bent met name benieuwd of de keuze voor DX 11 of DX 12 leidt tot betere prestaties in deze games. Om deze vraag te beantwoorden, hebben we een video gemaakt waarin de effecten van elke versie van DirectX in verschillende titels worden vergeleken, met gegevens zoals gemiddelde FPS, CPU-gebruik en GPU-gebruik, met behulp van een AMD Ryzen 3600, Nvidia GeForce RTX 3060 Ti en 16GB DDR4 RAM.

De bevindingen wekken verbazing op omdat er vaak een minimaal visueel verschil is tussen DX 11 en DX 12, ook al zijn ze enkele jaren na elkaar uitgebracht. Bovendien is het opmerkelijk dat het GPU- en CPU-gebruik vaak lager is voor de DX 12-iteraties van elke titel in vergelijking met hun respectievelijke DX 11-tegenhangers.

Het kiezen van een grafische verwerkingseenheid (GPU) die compatibel is met DirectX 11 of DirectX 12 is inderdaad cruciaal bij het maken van een dergelijke beslissing. Hoewel veel moderne GPU’s DirectX 12 kunnen ondersteunen, hebben bepaalde oudere GPU’s, zoals de Radeon HD uit 2008, mogelijk niet de benodigde capaciteiten om nieuwere titels aan te kunnen die zwaar op deze API’s leunen. Het gebruik van een verouderde GPU kan het vermogen om te genieten van recente game-ervaringen beperken, gezien de beperkte compatibiliteit met DirectX 11 en DirectX 12.

Is DirectX 12 de juiste keuze voor jou?

De overstap van DirectX 11 naar DirectX 12 is geen eenvoudige keuze, omdat deze afhankelijk is van verschillende variabelen, zoals de hardwareconfiguratie, softwarecompatibiliteit, het besturingssysteem en of een bepaald spel beide versies ondersteunt. Daarom moet er zorgvuldig worden nagedacht voordat er een conclusie wordt getrokken, die naar verwachting van toepassing zal blijven op volgende versies van DirectX.