• DirectX en games

    5 april 2010 14:44 door
    Altijd als we naar de systeemeisen van een PC-game kijken, zien we DirectX voorbij komen. Sommigen onder ons zullen waarschijnlijk wel weten dat het dient om het grafische gebeuren van een game zo optimaal mogelijk te maken.

    Maar voor wat is dit nu nodig en welk belang heeft het op games? Lees snel verder, want in deze special gaan we het allemaal voor je uitpluizen!



    Wat is DirectX en waarvoor dient het?

    DirectX kun je het beste vergelijken met een bibliotheek. <img src="http://vorming.minatica.be/Games/Specials/DirectX/watis.jpg" hspace="5" align="left"/>Welke twee zaken
    heeft een bibliotheek daadwerkelijk nodig om tot stand te kunnen komen? Juist ja, een gebouw en uiteraard ook boeken. Waarom? Een bibliotheek starten zonder gebouw kan al sowieso niet, maar een bibliotheek zonder boeken kan helemaal niet, want anders is het geen bibliotheek meer. Dit is het principe dat DirectX weet toe te passen.

    DirectX is namelijk een software library. Een software library is een pakket of bestand dat zichzelf niet kan uitvoeren, maar wel uitvoerbare componenten bevat die door andere programma’s gebruikt kunnen worden. De componenten die DirectX bevat zijn namelijk DLL’s (Dynamic Link Library), die voornamelijk hardwaredrivers zijn.
    Zoals je ziet past DirectX weldegelijk het bibliotheek-principe toe. Het is een pakket, wat het gebouw voorstelt, dat allemaal DLL’s bevat, die de boeken van de bibliotheek voorstellen.

    <img src="http://vorming.minatica.be/Games/Specials/DirectX/library.jpg" hspace="5" align="right"/>Naast enkel DLL’s, bevat DirectX ook API’s (Application Programming Interfaces). Via een API is het bijvoorbeeld mogelijk om pixels (beeldschermpuntjes) op het scherm te toveren, cirkels te tekenen, etc. Dankzij deze API’s hoeven programmeurs niet meer zelf deze code te schrijven, aangezien het dus al verwerkt zit in DirectX.

    Nu weten we ondertussen al wat DirectX is, maar nu is de vraag nog steeds waarvoor het dient. Het antwoord op deze vraag is eigenlijk simpel als je weet wat DirectX is. Vroeger had namelijk elke game zijn eigen 3D engine en werd elke keer de code opnieuw geschreven om de videokaart aan te sturen. Sinds de komst van Windows en zijn DirectX is dit niet meer nodig, aangezien DirectX de programmeurs toestaat om op snelle wijze grafische data weer te geven, geluid toegankelijk te maken en input functies te gebruiken zonder dat men hiervoor zelf de code moet schrijven.

    Werking van DirectX

    Nu weten we ondertussen wat DirectX is en waarvoor het dient, maar het is toch altijd interessant om ook de werking er van te weten.

    <img src="http://vorming.minatica.be/Games/Specials/DirectX/directx_11_logo.jpg" hspace="5" align="left"/>DirectX is zelf ook een API, maar dan van Windows. Zo dient het als een interface tussen de hardware van je computer en Windows zelf. Wanneer een game-ontwikkelaar een geluidsfragment wil afspelen, moet hij er enkel voor zorgen dat hij de juiste library functie gebruikt. Van zodra een gamer de game start, wordt de DirectX API aangesproken waardoor het geluidsfragment wordt afgespeeld.

    Wanneer DirectX software (bv. games) met de grafische kaart wil communiceren, wordt dit gedaan aan de hand van volgend patroon:

    Software <--> Video_Card_Drivers + DirectX <--> Video_Card_hardware


    Wanneer non-DirectX software (bv. fotobewerking) met hardware wil communiceren of als je een game speelt die geen DirectX support heeft, wordt dit gedaan aan de hand van volgend patroon:

    Software <--> CPU <--> Video_Card_Drivers <--> Video_Card_hardware


    <img src="http://vorming.minatica.be/Games/Specials/DirectX/Nvidia_AMD_Chips.png" hspace="5" align="right"/>Het grote verschil dat we terugvinden is dat bij DirectX software de CPU niet wordt aangesproken om de drivers aan te spreken. DirectX bevat zelf al de drivers en omdat drivers memory resident zijn, blijven deze continu actief in het geheugen van de computer en doet het van daaruit zijn werk. Het grote voordeel hiervan is dat de CPU vrij blijft en zijn kracht dus kan gebruiken om de game-AI onder handen te nemen.

    Om een lang verhaal kort te maken, alle DirectX software zal dus beter, sneller en efficiënter werken dan non-DirectX software!

    De evolutie (vergelijkend beeldmateriaal DirectX 9 – 10 – 11)

    “Is er echt zoveel verschil tussen de verschillende DirectX versies?” hoor ik mensen zich al direct afvragen. Om eerlijk te zijn is het verschil tussen DirectX 9 en DirectX 10 toch wel groot. Alles ziet er realistischer en levendiger uit. Het verschil tussen DirectX 10 en DirectX 11 is redelijk klein te noemen, maar een echt definitief oordeel kunnen we op moment van schrijven nog niet goed geven, aangezien DirectX 11 nog niet beschikbaar is.

    Hieronder volgt wat screenshot materiaal, zodat je zelf kunt zien hoeveel verschil er is tussen de verschillende versies.













    Het belang van DirectX op games

    Het belang van DirectX op games hebben we eigenlijk aangehaald doorheen de hele special, maar we gaan het in dit hoofdstuk nog eens herhalen zodat het toch duidelijk is voor iedereen.

    DirectX is dus een API van Windows, die functioneert als een interface tussen de hardware van je computer en Windows zelf. Dankzij de ingebouwde API's die DirectX bevat, is het makkelijk voor game-ontwikkelaars om verschillende delen code te generen zonder dat ze hem zelf moeten schrijven. Dit is een groot voordeel voor de ontwikkelaar, aangezien ze dan meer tijd kunnen steken in het schrijven van overige code voor de game.

    Naast API's bevat DirectX ook DLL's, die voornamelijk bestaan uit drivers voor de hardware van je PC. Omdat het ontwikkelen van games makkelijk gaat (voor ontwikkelaars) met DirectX, is het natuurlijk te begrijpen dat games DirectX supportable zijn. Het grote voordeel hiervan is dat de processor zijn rekenkracht kan gebruiken voor de A.I. van de game, wat er dus voor zorgt dat de game sneller, beter en efficiënter werkt. Dit geldt niet enkel voor games, maar voor alle software die DirectX ondersteuning hebben.

    Naast enkel de grafische kwaliteit te verbeteren, houdt DirectX zich ook bezig met functies voor de communicatie met de geluidskaart en zorgt het ook voor multiplayermogelijkheden. Maar om dit alles zo optimaal mogelijk te laten verlopen, is het aangeraden om steeds de laatste versie van DirectX geïnstalleerd te hebben. Als een game bv. DirectX 10 nodig heeft, is het ook vereist om over deze versie te beschikken. Beschik je niet over deze versie, zal je niet het “maximale” resultaat uit de game kunnen halen (zie het vorige hoofdstuk om het verschil te zien tussen de verschillende versies).

    Wat ook een groot voordeel is voor ons gamers (uiteraard ook voor andere computergebruikers) is dat DirectX het ons nogal makkelijk maakt als we nieuwe hardware componenten nodig hebben, toch alleszins voor het geluid. Is je oude geluidskaart stuk, kun je makkelijk een nieuwe steken en je hebt zonder problemen geluid.
    Met een videokaart moet je wel opletten, vooral degene die niet goed overweg kunnen met hardware. Als je een nieuwe videokaart koopt, zorg er dan voor dat deze de laatste DirectX versie ondersteunt die in die tijd beschikbaar is! Is dit niet het geval en je steekt deze kaart toch in je computer, zullen games die de nieuwste versie van DirectX nodig hebben niet in hun “maximaal” vermogen speelbaar zijn!


    Voor degene die meer technische informatie wensen over DirectX 10 en/of DirectX 11, kunnen altijd een kijkje nemen naar de dossiers van Minatica hardware collega G_Man.