CAD-programma’s, wetenschappelijke visualisatietools, maar ook spelletjes op Android: allemaal gebruiken ze OpenGL. Het is één van de voornaamste bestaansredenen van gpu’s ontwikkeld voor de professionele markt. Wat is het en hoe verschilt het van DirectX?
OpenGL staat voor Open Graphics Library. Het is een application programming interface (API) die software toelaat om met de grafische kaart te communiceren. OpenGL is zo een rechtstreekse concurrent voor Direct3D. Beiden bestaan naast elkaar, hebben hun eigen voor- en nadelen en, vooral, hun eigen aanhangers.
Direct3D en DirectX
Direct3D is een onderdeel van DirectX. Wie al eens een computerspel speelt, is daar ongetwijfeld mee vertrouwd. Microsofts eigen API zit intussen aan versie 12 en is de standaard voor pc-gaming. De API werd zeker vroeger door programmeurs als overdreven complex en rommelig beschouwd, maar is erg sterk in het leveren van grafische functies, die vooral in de gamingwereld belangrijk zijn. De DirectX-API wordt ontwikkeld door Microsoft en werkt enkel op Windows en de nieuwste Xbox.
De API werd intussen 22 jaar geleden geboren en biedt een zekere abstractie van de onderliggende grafische hardware. DirectX-drivers schrijven is in verhouding niet zo moeilijk, aangezien de API verwacht dat een groot deel van het werk gebeurt via de applicatie, die uiteindelijk beroep zal doen op grafische kracht.
Opensource OpenGL
OpenGL is iets ouder: de eerste implementatie ervan zag het levenslicht in 1992 als de opensource-opvolging van Iris GL. Silicon Graphics, destijds een grote naam, schreef Iris, maar de API was te groot en complex geworden om te onderhouden. Door de functionaliteit toe te vertrouwen aan de opensourcecommunity, werd het onderhoud ervan een gedeelde verantwoordelijkheid. Vandaag wordt OpenGL beheerd door de Khronos-groep: een non-profit consortium van leden met belang bij de API. Intussen zitten we aan OpenGL versie 4.6
OpenGL-drivers zijn complexer dan DirectX-drivers, omdat het beheer van hardwarebronnen zit ingebakken in de driver zelf. Dat betekent concreet dat hardwarebouwers voor ieder stuk hardware toegewijde OpenGL-drivers moeten voorzien. Verder is het doel van OpenGL hetzelfde: applicaties laten praten met grafische hardware.
OpenGL-drivers zijn complexer dan DirectX-drivers.
Onder de motorkap verschillen Direct3D en OpenGL nog op andere manieren, maar in wezen is het ene platform niet fundamenteel beter of slechter dan het andere. OpenGL heeft wel één immens voordeel tegenover Direct3D: het is platform-agnostisch. De API werkt op Windows, Linux, macOS en een variant ervan drijft zelfs de grafische capaciteiten van je Android-smartphone aan.
Verschil in drivers
Voor workstations is OpenGL in de praktijk veel belangrijker dan DirectX. Software die gebruik maakt van een grafische kaart, zoals CAD-programma’s of professionele visualisatietools, doen dat doorgaans via OpenGL. Dat betekent dat de gebruikte grafische kaarten uitstekende OpenGL-drivers nodig hebben.
Dat laat OEM’s toe om een duidelijk onderscheid te maken tussen grafische kaarten voor consumenten en grafische kaarten voor workstations. Versta onder die laatste de FirePro- of Radeon Pro-kaarten van AMD en de Quadro’s van Nvidia. Die hebben geoptimaliseerde drivers waarmee professionele workloads worden ondersteund. Die optimalisatie heeft voor een stuk te maken met OpenGL-ondersteuning. In de praktijk kunnen zowel professionele als consumentenkaarten vandaag best goed met beiden onderweg, maar dat is een ander verhaal.
Marketing
Dat de gamingindustrie en masse voor DirectX kiest, heeft voor een stuk met marketing van Microsoft te maken. Ontwikkelaars die in aanloop van de lancering van Windows Vista onzeker waren over de blijvende ondersteuning voor OpenGL in het OS, kozen eieren voor hun geld. Bovendien versterkt het gebruik van een API zichzelf: ontwikkelaars zijn getraind in Direct3D, dus ze ontwikkelen meer in Direct3D, waardoor meer ontwikkelaars er bedreven in zijn. In de gaming-industrie heerst er nog steeds het idee dat het cliënteel Windows draait en macOS- of Linux-gebruikers een verwaarloosbaar deel van de markt zijn.
Cross-platform prioriteit
Voor ontwikkelaars van professionele applicaties lag het anders. Cross-platformcompatibiliteit was en is hier nog steeds veel belangrijker. Wie een CAD-programma ontwikkelt voor Windows wil dat idealiter zo vlot mogelijk herschrijven naar macOS. OpenGL laat een dergelijke overdraagbaarheid van de applicaties toe. Bovendien heeft de API enkele niche-kunstjes die in een professionele context handig zijn, zoals hardware-acceleratie over het netwerk.
Als we naar visualisatie binnen een wetenschappelijke context kijken, zien we dat de ondersteuning van meerdere programmeertalen (OpenGL is aanspreekbaar via de meeste talen als de juiste koppelingen gedefinieerd zijn) en de compatibiliteit met Linux een rol spelen. De API is erg schaalbaar, en werkt op alles van een mobiele telefoon tot een supercomputer.
De API werkt op alles van een mobiele telefoon tot een supercomputer.
In de praktijk kan je stellen dat de tegenstelling tussen Direct3D en OpenGL een kunstmatige is. Het is perfect mogelijk om OpenGL en Direct3D te combineren in één nieuwe opensource-API die iedereen kan gebruiken. Dat plan heeft zelfs ooit bestaan. Het heette Fahrenheit en werd in 1997 aan de pers voorgesteld. De OpenGL-gemeenschap en Microsoft zouden de API samen ontwikkelen. Tegen 1999 was het echter duidelijk dat Microsoft geen plannen meer had om zijn ambitie na te komen. De reden hoef je niet ver te zoeken: het Windows-exclusieve DirectX brengt vendor lock-in met zich mee. Dat laat Microsoft toe om Windows tot vandaag als het enige geloofwaardige alternatief voor pc-gaming te positioneren.
Kleine evolutie
Voorlopig zal er dus weinig veranderen. Aan de professionele kant van het verhaal hoeft dat ook niet. OpenGL doet perfect wat het moet en applicaties maken gretig gebruik van de API. Verder zien we wel hoe ook de gaming-industrie stilaan meer naar OpenGL kijkt, zeker nu mobiele toestellen zich steeds meer ontpoppen tot mini-gamingconsoles.
Virtual en augmented reality zijn een andere katalysator. OpenGL wordt wel gebruikt voor de visualisatie van VR-toepassingen en laat zo zien dat het wel degelijk in staat is om op het niveau van DirectX te spelen. OpenGL als VR-API is bovendien niet zo ver gezocht, aangezien virtual reality in professionele context steeds meer lijkt door te breken.
Andere API’s
Direct3D en OpenGL zijn niet de enige API’s, maar het zijn wel de belangrijkste. De Khronos-groep ontwikkelde bijvoorbeeld Vulkan, dat deels een opvolger van en deels een complementaire aanvulling op OpenGL moet zijn. Vulkan is ook opensource en combineert de troeven van OpenGL met een erg lage ‘driver overhead’. Met andere woorden: de API is gebouwd voor efficiëntie, zodat de drivers zelf zo weinig mogelijk van de beschikbare systeembronnen moeten gebruiken. Apple stapte dan weer van OpenGL af met de eigen Metal-API. Daarmee huppelt Apple Microsoft achterna met de creatie van een eigen API, met het grote verschil dat Apple nog minder argumenten heeft om ontwikkelaars van OpenGL weg te halen.
Het verschil
Uiteindelijk is en blijft OpenGL de logische keuze voor professionele software en DirectX zal nog een tijdje de norm blijven in de gaming-industrie. Dat maakt het voor OEM’s dan weer eenvoudiger om pro-hardware met een hoger prijskaartje te verkopen. Het verschil zit niet in een ongelooflijke discrepantie in functionaliteit, wel in de loop van een lange geschiedenis, succesvolle marketing, en platformcompatibiliteit.
Gerelateerd: Nvidia Quadro of GeForce in je workstation: wat is het verschil?