Grafische API's, zoals OpenGL en DirectX, fungeren als een brug tussen de software en grafische hardware die wordt gebruikt om games te spelen. Deze API's bieden gestandaardiseerde methoden om 2D- en 3D-afbeeldingen op het scherm weer te geven. Ze zijn de afgelopen decennia van fundamenteel belang geworden voor de ontwikkeling van games.
Engines zoals Unity bieden een keuze tussen de grafische API's die ze gebruiken, maar hoe moet je de juiste optie voor je game kiezen? Doe met ons mee terwijl we OpenGL vergelijken met DirectX om u een idee te geven van welke van deze tools het beste voor u is.
DirectX versus OpenGL: overzicht van hoofdfuncties
In de kern delen zowel DirectX als OpenGL dezelfde grafische pijplijn, en dat doen ze al vele jaren. Beide API's gebruiken punten die hoekpunten worden genoemd om complexe grafische primitieven te bouwen. Elk hoekpunt slaat zijn eigen coördinaten en andere belangrijke informatie op. Maar de manier waarop elke bibliotheek hoekpunten gebruikt, is anders.
Ze kunnen vergelijkbare functies uitvoeren, maar u zult het verschil tussen OpenGL en DirectX merken als u ermee werkt.
DirectX versus OpenGL: API-bereik
Voordat we veel verder gaan, is het belangrijk op te merken dat, hoewel het beide grafische API's zijn, OpenGL en DirectX verschillende reikwijdten hebben. OpenGL is een rasechte grafische API en dit betekent dat het niets anders doet dan 2D- en 3D-graphics. DirectX daarentegen is een verzameling grafische, audio-, netwerk- en andere hardware-API's die allemaal samenwerken.
In sommige gevallen zal OpenGL DirectX gebruiken om functies uit te voeren die het alleen niet kan. De rest van dit artikel negeert dit verschil tussen de twee API's, met de nadruk op de grafische elementen van elke tool.
OpenGL vs. DirectX: Platformen
OpenGL is een gratis API die wordt beheerd door een non-profit bedrijf genaamd Khronos Group, terwijl DirectX wordt gemaakt door Microsoft. DirectX werkt voornamelijk op Windows en Xbox, terwijl andere platforms, zoals Linux, langzaam ondersteuning krijgen. OpenGL is platformonafhankelijk, waardoor het bruikbaar is voor game-ontwikkeling voor een reeks besturingssystemen en gameconsoles.
DirectX versus OpenGL: hardwarebronnen
DirectX laat het hardwarebeheer over aan de ontwikkelaar, zodat u resources efficiënt kunt toewijzen wanneer u ze nodig hebt. OpenGL zorgt voor hardwarebeheer, maar dit kan zijn eigen voordelen hebben, omdat u zich geen zorgen hoeft te maken over het zelf beheren van bronnen.
DirectX versus OpenGL: documentatie
Toegang tot gedetailleerde documentatie kan de ontwikkeling van games veel gemakkelijker maken bij het werken met API's. DirectX en OpenGL bieden regelmatig bijgewerkte documentatie en nuttige ontwikkelaarsgemeenschappen. Beide API's ontvangen grote jaarlijkse updates om ervoor te zorgen dat ze de best beschikbare functies bieden.
OpenGL gebruiken vs. DirectX voor game-ontwikkeling
Ontwikkelaars hebben veel mooie en goed geoptimaliseerde games op de moderne markt gemaakt met zowel OpenGL als DirectX. Er zijn verschillende dingen waarmee u rekening moet houden bij het kiezen van een 2D/3D grafische API. Sommige ontwikkelaars vertrouwen gewoon op de tool waarmee ze het meest vertrouwd zijn.
OpenGL of DirectX: platformen
We hebben het al gehad over platforms, maar dit is een cruciale overweging voor ontwikkelaars. Als je games voor de Nintendo Switch, Playstation 4 of Linux wilt maken, moet je met OpenGL of een andere API werken die daarvoor ondersteuning biedt. DirectX is gemaakt voor Windows en Xbox en is beperkt compatibel met andere systemen.
OpenGL of DirectX: motorcompatibiliteit
De meeste game-ontwikkelaars gebruiken tegenwoordig engines zoals Unity en Unreal om hun games te maken. Beide engines ondersteunen OpenGL en DirectX, net als andere platformonafhankelijke game-ontwikkelingsengines.
OpenGL of DirectX: gebruiksgemak
Sommigen zouden beweren dat OpenGL gemakkelijker is om mee te werken dan DirectX. Naast hardwarebronnen verwerkt OpenGL alleen afbeeldingen, waardoor het van nature eenvoudiger is. Het feit dat het op meer platforms werkt, maakt het ook gemakkelijker om games met deze vereiste uit te brengen.
Het gebruiksgemak van de grafische API is niet zo belangrijk als vroeger voor game-ontwikkelaars. Met motoren zoals Unity interface met grafische API's achter de schermen, het kost slechts een klik op een knop om de API die u gebruikt te wisselen. Tenzij u een geheel nieuwe game maakt, is het onwaarschijnlijk dat u een verschil zult merken in het gebruiksgemak van elke API.
OpenGL of DirectX: grafische functies
Tenzij u een randgeval bent, is het onwaarschijnlijk dat u een enorm verschil zult zien in de beschikbare functies tussen deze API's. Ze ondersteunen allebei de mogelijkheden van je grafische kaart, en dit gaat alleen veranderen als GPU's dramatische veranderingen zien in de toekomst.
OpenGL of DirectX: spelprestaties
Er is veel discussie tussen ontwikkelaars over de prestaties van deze API's. Het is moeilijk voor te stellen dat OpenGL of DirectX heeft aanzienlijke prestatieverschillen, hoewel de bewering dat OpenGL soepeler en efficiënter is gebruikelijk is online.
De enige manier om erachter te komen welke van deze API's het beste presteert, is door te testen. Dankzij de compatibiliteit van Unity met beide API's, kunnen we een project maken en een voorbeeldgame testen met beide API's om maak een prestatiebenchmark.
Deze tests zijn uitgevoerd met zowel 2D- als 3D-graphics om ervoor te zorgen dat hun verschillende pijplijnen geen significante factor zijn. Elke test duurt 120 seconden reguliere gameplay en frames per seconde worden gemeten om de prestaties te bepalen. Alle testen zijn uitgevoerd op dezelfde pc.
3D-prestatietest: Unity Carting Microgame
De Unity Carting Microgame is een gratis sjabloon die alles bevat wat je nodig hebt om een eenvoudig racespel te bouwen. Het wordt geleverd met tutorials, maar we zijn meer geïnteresseerd in het spel zelf. We hebben de Carting Microgame gebouwd met zowel OpenGL als DirectX om hun prestaties te vergelijken en de resultaten waren als volgt:
laagste | hoogste | Gemiddeld | |
---|---|---|---|
DirectX | 331 | 848 | 365.05 |
OpenGL | 247 | 819 | 283.7 |
DirectX presteerde beter dan OpenGL in onze 3D-benchmark en behaalde overal indrukwekkende framesnelheden. De resultaten van OpenGL zijn nog steeds meer dan speelbaar.
2D-prestatietest: Unity Platformer Microgame
Net als de Carting Microgame, is de Unity Platformer Microgame gratis en boordevol geweldige leerhulpmiddelen. Zoals verwacht presteert de 2D-game in onze tests beter dan de 3D-game, maar de resultaten kun je zelf beoordelen.
laagste | hoogste | Gemiddeld | |
---|---|---|---|
DirectX | 599 | 850 | 767.367 |
OpenGL | 302 | 604 | 515.417 |
Zoals je kunt zien aan de bovenstaande resultaten, behaalde DirectX een veel hogere gemiddelde framesnelheid in onze tests. Hoewel het verschil er dramatisch uit kan zien, zijn beide resultaten zeer goed speelbaar.
OpenGL of DirectX 11: prestatie-conclusie
Hoewel veel mensen zeggen dat OpenGL beter presteert dan DirectX, behaalde de laatstgenoemde API betere resultaten in onze beide benchmarks. Dit is verre van overtuigend, aangezien veel factoren een rol spelen bij het dicteren van de prestaties van een game, vooral naarmate ze complexer worden.
DirectX of OpenGL: welke moet u gebruiken voor game-ontwikkeling?
Het kiezen van de juiste grafische API hangt af van verschillende factoren. DirectX is de meest gebruikte grafische API. Veel game-ontwikkelaars maken hun games voor Windows en Xbox voordat ze ze overzetten naar OpenGL voor andere platforms. Als u een game exclusief buiten Windows en Xbox publiceert, kunt u vanaf het begin profiteren van het gebruik van OpenGL.
Prestaties zijn ook een factor om te overwegen, hoewel onze tests aantonen dat dit vrij verwaarloosbaar is bij het gebruik van motortools zoals Unity. In wezen zijn de verschillen tussen deze twee grafische API's alleen van belang voor diegenen die op zoek zijn naar specifieke nichefuncties.