Grafik-API'er, som OpenGL og DirectX, fungerer som en bro mellem softwaren og den grafiske hardware, der bruges til at spille spil. Disse API'er giver standardiserede metoder til at vise 2D- og 3D-grafik på skærmen. De er blevet grundlæggende for spiludvikling i løbet af de sidste par årtier.
Motorer som Unity tilbyder et valg mellem de grafiske API'er, de bruger, men hvordan skal du vælge den rigtige mulighed for dit spil? Slut dig til os, mens vi sammenligner OpenGL med DirectX for at give dig en idé om, hvilke af disse værktøjer der er bedst for dig.
DirectX vs. OpenGL: Oversigt over hovedfunktioner
I deres kerne deler både DirectX og OpenGL den samme grafiske pipeline, og det har de i mange år. Begge API'er bruger punkter kaldet toppunkter til at bygge komplekse grafiske primitiver. Hvert toppunkt gemmer sine egne koordinater og andre vigtige oplysninger. Men måden, som hvert bibliotek bruger hjørner på, er forskellig.
De kan udføre lignende funktioner, men du vil bemærke forskellen mellem OpenGL og DirectX, hvis du arbejder med dem.
DirectX vs. OpenGL: API Scope
Inden vi går meget videre, er det vigtigt at bemærke, at selvom de begge er grafiske API'er, har OpenGL og DirectX forskellige omfang. OpenGL er et rendyrket grafik-API, og det betyder, at det ikke beskæftiger sig med andet end 2D- og 3D-grafik. DirectX er på den anden side en samling af grafik, lyd, netværk og andre hardware API'er, der alle arbejder sammen.
I nogle tilfælde vil OpenGL bruge DirectX til at udføre funktioner, som den ikke kan udføre alene. Resten af denne artikel vil ignorere denne forskel mellem de to API'er, med fokus på de grafiske elementer i hvert værktøj.
OpenGL vs. DirectX: Platforme
OpenGL er en gratis API, der administreres af en non-profit virksomhed kaldet Khronos Group, mens DirectX er lavet af Microsoft. DirectX fungerer primært på Windows og Xbox, hvor andre platforme, såsom Linux, langsomt får support. OpenGL er på tværs af platforme, hvilket gør den anvendelig til spiludvikling på tværs af en række styresystemer og spilkonsoller.
DirectX vs. OpenGL: Hardwareressourcer
DirectX overlader hardwarestyring til udvikleren, hvilket giver dig mulighed for at allokere ressourcer effektivt, efterhånden som du har brug for dem. OpenGL håndterer hardwarestyring, men dette kan komme med sine egne fordele, da du ikke selv skal bekymre dig om at administrere ressourcer.
DirectX vs. OpenGL: Dokumentation
Adgang til detaljeret dokumentation kan gøre spiludvikling meget lettere, når du arbejder med API'er. DirectX og OpenGL tilbyder regelmæssigt opdateret dokumentation og nyttige udviklerfællesskaber. Begge disse API'er modtager store årlige opdateringer for at sikre, at de tilbyder de bedste tilgængelige funktioner.
Brug af OpenGL vs. DirectX til spiludvikling
Udviklere har lavet mange smukke og veloptimerede spil på det moderne marked ved hjælp af både OpenGL og DirectX. Der er flere ting, du bør overveje, når du vælger en 2D/3D grafik API. Nogle udviklere vil simpelthen stole på det værktøj, de er mest komfortable med.
OpenGL eller DirectX: Platforme
Vi har allerede været inde på platforme, men dette er en afgørende overvejelse for udviklere. Hvis du vil lave spil til Nintendo Switch, Playstation 4 eller Linux, skal du arbejde med OpenGL eller en anden API med understøttelse af dem. DirectX er lavet til Windows og Xbox og har begrænset kompatibilitet med andre systemer.
OpenGL eller DirectX: Engine Compatibility
De fleste spiludviklere bruger motorer som Unity og Unreal til at skabe deres spil i dag. Begge disse motorer understøtter OpenGL og DirectX, ligesom andre spiludviklingsmotorer på tværs af platforme.
OpenGL eller DirectX: Brugervenlighed
Nogle vil hævde, at OpenGL er lettere at arbejde med end DirectX. Ud over hardwareressourcer håndterer OpenGL kun grafik, hvilket gør det enklere af natur. Det faktum, at det fungerer på tværs af flere platforme, gør det også nemmere at udgive spil med dette krav.
Graphics API brugervenlighed er ikke så vigtig, som den plejede at være for spiludviklere. Med motorer som Unity interface med grafik-API'er bag kulisserne, kræver det kun et klik på en knap for at skifte den API, du bruger. Medmindre du opretter et spil fra bunden, er det usandsynligt, at du vil bemærke en forskel i brugervenligheden af hver API.
OpenGL eller DirectX: Grafikfunktioner
Medmindre du er en udkantssag, er det usandsynligt, at du vil se en kæmpe forskel i de funktioner, du har til rådighed mellem disse API'er. De understøtter begge dit grafikkorts muligheder, og dette vil kun ændre sig, hvis GPU'er ser dramatiske ændringer i fremtid.
OpenGL eller DirectX: Game Performance
Der er megen debat mellem udviklere om ydelsen af disse API'er. Det er svært at forestille sig, at OpenGL eller DirectX har betydelige ydeevneforskelle, selvom påstanden om, at OpenGL er glattere og mere effektiv, er almindelig online.
Den eneste måde at finde ud af, hvilke af disse API'er der klarer sig bedst, er gennem test. Takket være Unitys kompatibilitet med begge API'er kan vi oprette et projekt og teste et eksempelspil med begge API'er til skabe et præstationsbenchmark.
Disse tests er blevet udført med både 2D- og 3D-grafik for at sikre, at deres forskellige pipelines ikke er en væsentlig faktor. Hver test kører i 120 sekunders almindelig gameplay, og billeder i sekundet bliver målt for at bestemme ydeevnen. Al test er udført på samme pc.
3D Performance Test: Unity Carting Microgame
Unity Carting Microgame er en gratis skabelon, der indeholder alt, hvad du behøver for at bygge et simpelt racerspil. Det kommer med tutorials, men vi er mere interesserede i selve spillet. Vi byggede Carting Microgame med både OpenGL og DirectX for at sammenligne deres ydeevne, og resultaterne var som følger:
Laveste | Højest | Gennemsnit | |
---|---|---|---|
DirectX | 331 | 848 | 365.05 |
OpenGL | 247 | 819 | 283.7 |
DirectX klarede sig bedre end OpenGL i vores 3D-benchmark og opnåede imponerende billedhastigheder hele vejen igennem. OpenGLs resultater er stadig mere end spilbare.
2D Performance Test: Unity Platformer Microgame
Ligesom Carting Microgame er Unity Platformer Microgame gratis og spækket med fantastiske læringsværktøjer. Som forventet klarer 2D-spillet i vores test sig bedre end 3D-spillet, men du kan selv vurdere resultaterne.
Laveste | Højest | Gennemsnit | |
---|---|---|---|
DirectX | 599 | 850 | 767.367 |
OpenGL | 302 | 604 | 515.417 |
Som du kan se fra resultaterne ovenfor, opnåede DirectX en meget højere gennemsnitlig billedhastighed i vores test. Selvom forskellen kan se dramatisk ud, er begge resultater meget spilbare.
OpenGL eller DirectX 11: Konklusion om ydeevne
Mens mange mennesker siger, at OpenGL yder bedre end DirectX, opnåede sidstnævnte API bedre resultater i begge vores benchmarks. Dette er langt fra afgørende, med mange faktorer, der spiller en rolle i at diktere et spils ydeevne, især efterhånden som de bliver mere komplekse.
DirectX eller OpenGL: Hvilken skal du bruge til spiludvikling?
Valget af det rigtige grafik-API afhænger af flere faktorer. DirectX er den mest udbredte grafik API. Mange spiludviklere skaber deres spil til Windows og Xbox, før de porterer dem til OpenGL til andre platforme. Hvis du udgiver et spil udelukkende uden for Windows og Xbox, kan du muligvis drage fordel af at bruge OpenGL fra begyndelsen.
Ydeevne er også en faktor at overveje, selvom vores test viser, at dette er ret ubetydeligt, når du bruger motorværktøjer som Unity. I det væsentlige betyder forskellene mellem disse to grafik-API'er kun for dem, der leder efter specifikke nichefunktioner.