Grafikk-API-er, som OpenGL og DirectX, fungerer som en bro mellom programvaren og grafikkmaskinvaren som brukes til å spille spill. Disse API-ene gir standardiserte metoder for å vise 2D- og 3D-grafikk på skjermen. De har blitt grunnleggende for spillutvikling de siste par tiårene.
Motorer som Unity tilbyr et valg mellom grafikk-API-ene de bruker, men hvordan skal du velge det riktige alternativet for spillet ditt? Bli med oss mens vi sammenligner OpenGL med DirectX for å gi deg en ide om hvilke av disse verktøyene som passer best for deg.
DirectX vs. OpenGL: Oversikt over hovedfunksjoner
I kjernen deler både DirectX og OpenGL samme grafikkpipeline, og det har de gjort i mange år. Begge API-ene bruker punkter kalt toppunkter for å bygge komplekse grafikkprimitiver. Hvert toppunkt lagrer sine egne koordinater og annen viktig informasjon. Men måten hvert bibliotek bruker hjørner på er forskjellig.
De kan utføre lignende funksjoner, men du vil merke forskjellen mellom OpenGL og DirectX hvis du jobber med dem.
DirectX vs. OpenGL: API-omfang
Før du går mye lenger, er det viktig å merke seg at mens de begge er grafiske APIer, har OpenGL og DirectX forskjellige omfang. OpenGL er et renraset grafikk API, og dette betyr at det ikke håndterer noe annet enn 2D- og 3D-grafikk. DirectX, på den annen side, er en samling av grafikk, lyd, nettverk og annen maskinvare-API som alle jobber sammen.
I noen tilfeller vil OpenGL bruke DirectX til å utføre funksjoner som den ikke kan gjøre på egen hånd. Resten av denne artikkelen vil ignorere denne forskjellen mellom de to API-ene, og fokusere på de grafiske elementene til hvert verktøy.
OpenGL vs. DirectX: Plattformer
OpenGL er et gratis API administrert av et non-profit selskap kalt Khronos Group, mens DirectX er laget av Microsoft. DirectX fungerer først og fremst på Windows og Xbox, mens andre plattformer, som Linux, sakte får støtte. OpenGL er på tvers av plattformer, noe som gjør den brukbar for spillutvikling på tvers av en rekke operativsystemer og spillkonsoller.
DirectX vs. OpenGL: Maskinvareressurser
DirectX overlater maskinvareadministrasjon til utvikleren, og gir deg muligheten til å allokere ressurser effektivt, ettersom du trenger dem. OpenGL håndterer maskinvareadministrasjon, men dette kan komme med sine egne fordeler, siden du ikke trenger å bekymre deg for å administrere ressurser selv.
DirectX vs. OpenGL: Dokumentasjon
Tilgang til detaljert dokumentasjon kan gjøre spillutvikling mye enklere når du arbeider med APIer. DirectX og OpenGL tilbyr regelmessig oppdatert dokumentasjon og nyttige utviklerfellesskap. Begge disse APIene mottar store årlige oppdateringer for å sikre at de tilbyr de beste tilgjengelige funksjonene.
Bruk av OpenGL vs. DirectX for spillutvikling
Utviklere har laget mange vakre og godt optimaliserte spill på det moderne markedet ved å bruke både OpenGL og DirectX. Det er flere ting du bør vurdere når du velger en 2D/3D grafikk API. Noen utviklere vil ganske enkelt stole på verktøyet de er mest komfortable med.
OpenGL eller DirectX: Plattformer
Vi har allerede vært inne på plattformer, men dette er en avgjørende vurdering for utviklere. Hvis du vil lage spill for Nintendo Switch, Playstation 4 eller Linux, må du jobbe med OpenGL eller en annen API med støtte for dem. DirectX er laget for Windows og Xbox og har begrenset kompatibilitet med andre systemer.
OpenGL eller DirectX: Motorkompatibilitet
De fleste spillutviklere bruker motorer som Unity og Unreal for å lage spillene sine, i dag. Begge disse motorene støtter OpenGL og DirectX, i likhet med andre spillutviklingsmotorer på tvers av plattformer.
OpenGL eller DirectX: Brukervennlighet
Noen vil hevde at OpenGL er lettere å jobbe med enn DirectX. Ved siden av maskinvareressurser håndterer OpenGL kun grafikk, noe som gjør det enklere av natur. Det at det fungerer på tvers av flere plattformer gjør det også lettere å gi ut spill med dette kravet.
Graphics API brukervennlighet er ikke så viktig som det pleide å være for spillutviklere. Med motorer som Unity grensesnitt med grafikk-API-er bak kulissene, tar det bare et klikk på en knapp for å bytte API-en du bruker. Med mindre du lager et spill fra bunnen av, er det lite sannsynlig at du vil merke en forskjell i brukervennligheten til hver API.
OpenGL eller DirectX: Grafikkfunksjoner
Med mindre du er en utkantsak, er det lite sannsynlig at du vil se en stor forskjell i funksjonene du har tilgjengelig mellom disse APIer. De støtter begge grafikkortets evner, og dette vil bare endre seg hvis GPU-er ser dramatiske endringer i framtid.
OpenGL eller DirectX: Spillytelse
Det er mye debatt mellom utviklere angående ytelsen til disse APIene. Det er vanskelig å forestille seg at OpenGL eller DirectX har betydelige ytelsesforskjeller, selv om påstanden om at OpenGL er jevnere og mer effektiv er vanlig på nett.
Den eneste måten å finne ut hvilke av disse APIene som yter best, er gjennom testing. Takket være Unitys kompatibilitet med begge API-ene, kan vi lage et prosjekt og teste et eksempelspill med begge API-ene for å lage en ytelsesreferanse.
Disse testene er utført med både 2D- og 3D-grafikk for å sikre at de forskjellige rørledningene deres ikke er en vesentlig faktor. Hver test kjører i 120 sekunder med vanlig spilling, og bilder per sekund blir målt for å bestemme ytelsen. All testing er utført på samme PC.
3D-ytelsestest: Unity Carting Microgame
Unity Carting Microgame er en gratis mal som inneholder alt du trenger for å bygge et enkelt racingspill. Det følger med tutorials, men vi er mer interessert i selve spillet. Vi bygde Carting Microgame med både OpenGL og DirectX for å sammenligne ytelsen deres, og resultatene var som følger:
Lavest | Høyest | Gjennomsnitt | |
---|---|---|---|
DirectX | 331 | 848 | 365.05 |
OpenGL | 247 | 819 | 283.7 |
DirectX overgikk OpenGL i vår 3D-referanse, og oppnådde imponerende bildefrekvenser hele veien. OpenGLs resultater er fortsatt mer enn spillbare.
2D ytelsestest: Unity Platformer Microgame
På samme måte som Carting Microgame, er Unity Platformer Microgame gratis og fullpakket med flotte læringsverktøy. Som forventet gir 2D-spillet i testene våre bedre resultater enn 3D-spillet, men du kan vurdere resultatene selv.
Lavest | Høyest | Gjennomsnitt | |
---|---|---|---|
DirectX | 599 | 850 | 767.367 |
OpenGL | 302 | 604 | 515.417 |
Som du kan se fra resultatene ovenfor, oppnådde DirectX en mye høyere gjennomsnittlig bildefrekvens i vår testing. Selv om forskjellen kan se dramatisk ut, er begge resultatene veldig spillbare.
OpenGL eller DirectX 11: Ytelseskonklusjon
Mens mange sier at OpenGL yter bedre enn DirectX, oppnådde sistnevnte API bedre resultater i begge våre benchmarks. Dette er langt fra avgjørende, med mange faktorer som spiller en rolle i å diktere et spills ytelse, spesielt ettersom de blir mer komplekse.
DirectX eller OpenGL: Hvilken bør du bruke for spillutvikling?
Å velge riktig grafikk-API avhenger av flere faktorer. DirectX er det mest brukte grafikk-API. Mange spillutviklere lager spillene sine for Windows og Xbox før de porterer dem til OpenGL for andre plattformer. Hvis du publiserer et spill utelukkende utenfor Windows og Xbox, kan du ha nytte av å bruke OpenGL fra begynnelsen.
Ytelse er også en faktor å vurdere, selv om testingen vår viser at dette er ganske ubetydelig når du bruker motorverktøy som Unity. I hovedsak betyr forskjellene mellom disse to grafikk-API-ene bare for de som leter etter spesifikke nisjefunksjoner.