Graficzne interfejsy API, takie jak OpenGL i DirectX, działają jako pomost między oprogramowaniem a sprzętem graficznym używanym do grania w gry. Te interfejsy API zapewniają standardowe metody wyświetlania grafiki 2D i 3D na ekranie. W ciągu ostatnich kilku dekad stały się podstawą tworzenia gier.
Silniki takie jak Unity oferują wybór między graficznymi interfejsami API, których używają, ale jak wybrać właściwą opcję dla swojej gry? Dołącz do nas, gdy porównujemy OpenGL z DirectX, aby dowiedzieć się, które z tych narzędzi jest dla Ciebie najlepsze.
DirectX a OpenGL: przegląd głównych funkcji
W swej istocie zarówno DirectX, jak i OpenGL mają ten sam potok graficzny i to od wielu lat. Oba interfejsy API wykorzystują punkty zwane wierzchołkami do tworzenia złożonych elementów graficznych. Każdy wierzchołek przechowuje własne współrzędne i inne ważne informacje. Ale sposób, w jaki każda biblioteka używa wierzchołków, jest inny.
Mogą wykonywać podobne funkcje, ale zauważysz różnicę między OpenGL i DirectX, jeśli z nimi pracujesz.
DirectX a OpenGL: zakres API
Zanim przejdziemy dalej, warto zauważyć, że chociaż oba są graficznymi interfejsami API, OpenGL i DirectX mają różne zakresy. OpenGL jest czystym graficznym interfejsem API, a to oznacza, że nie zajmuje się niczym innym niż grafiką 2D i 3D. Z drugiej strony DirectX to zbiór interfejsów graficznych, dźwiękowych, sieciowych i innych sprzętowych interfejsów API, które współpracują ze sobą.
W niektórych przypadkach OpenGL użyje DirectX do wykonywania funkcji, których nie może wykonać samodzielnie. W dalszej części tego artykułu będziemy ignorować tę różnicę między dwoma interfejsami API, skupiając się na elementach graficznych każdego narzędzia.
OpenGL kontra DirectX: Platformy
OpenGL to darmowy interfejs API zarządzany przez organizację non-profit o nazwie Khronos Group, podczas gdy DirectX jest tworzony przez Microsoft. DirectX działa głównie na Windowsie i Xboksie, a inne platformy, takie jak Linux, powoli otrzymują wsparcie. OpenGL jest wieloplatformowy, dzięki czemu można go używać do tworzenia gier w wielu systemach operacyjnych i konsolach do gier.
DirectX a OpenGL: zasoby sprzętowe
DirectX pozostawia zarządzanie sprzętem programiście, dając Ci możliwość efektywnego przydzielania zasobów zgodnie z potrzebami. OpenGL obsługuje zarządzanie sprzętem, ale może to mieć swoje zalety, ponieważ nie musisz się martwić o samodzielne zarządzanie zasobami.
DirectX a OpenGL: Dokumentacja
Dostęp do szczegółowej dokumentacji może znacznie ułatwić tworzenie gier podczas pracy z interfejsami API. DirectX i OpenGL oferują regularnie aktualizowaną dokumentację i pomocne społeczności programistów. Oba te interfejsy API otrzymują co roku duże aktualizacje, aby zapewnić, że oferują najlepsze dostępne funkcje.
Korzystanie z OpenGL vs. DirectX do tworzenia gier
Deweloperzy stworzyli na współczesnym rynku wiele pięknych i dobrze zoptymalizowanych gier, korzystając zarówno z OpenGL, jak i DirectX. Jest kilka rzeczy, które należy wziąć pod uwagę przy wyborze interfejsu API grafiki 2D/3D. Niektórzy programiści będą po prostu polegać na narzędziu, z którym czują się najbardziej komfortowo.
OpenGL lub DirectX: platformy
Poruszyliśmy już platformy, ale jest to kluczowa kwestia dla programistów. Jeśli chcesz tworzyć gry na Nintendo Switch, Playstation 4 lub Linux, będziesz musiał pracować z OpenGL lub innym API z ich obsługą. DirectX jest przeznaczony dla Windows i Xbox i ma ograniczoną kompatybilność z innymi systemami.
OpenGL lub DirectX: Zgodność silnika
Większość twórców gier używa obecnie silników takich jak Unity i Unreal do tworzenia swoich gier. Oba te silniki obsługują OpenGL i DirectX, podobnie jak inne międzyplatformowe silniki do tworzenia gier.
OpenGL lub DirectX: łatwość użytkowania
Niektórzy twierdzą, że OpenGL jest łatwiejszy w obsłudze niż DirectX. Oprócz zasobów sprzętowych OpenGL obsługuje tylko grafikę, co z natury jest prostsze. Fakt, że działa na większej liczbie platform, ułatwia również wydawanie gier z tym wymogiem.
Łatwość obsługi graficznego interfejsu API nie jest tak ważna jak kiedyś dla twórców gier. Z silnikami takimi jak Unity współpracując z graficznymi interfejsami API za kulisami, wystarczy jedno kliknięcie, aby zamienić używany interfejs API. Jeśli nie tworzysz gry od podstaw, jest mało prawdopodobne, że zauważysz różnicę w łatwości użytkowania każdego interfejsu API.
OpenGL lub DirectX: Funkcje graficzne
O ile nie jesteś marginalnym przypadkiem, jest mało prawdopodobne, że zobaczysz ogromną różnicę w dostępnych funkcjach między tymi Pszczoła. Obydwa obsługują możliwości Twojej karty graficznej, a to się zmieni tylko wtedy, gdy procesory graficzne zobaczą dramatyczne zmiany w przyszły.
OpenGL lub DirectX: wydajność gry
Programiści toczą wiele dyskusji na temat wydajności tych interfejsów API. Trudno sobie wyobrazić, że OpenGL lub DirectX ma znaczne różnice w wydajności, chociaż powszechne jest twierdzenie, że OpenGL jest płynniejszy i bardziej wydajny online.
Jedynym sposobem sprawdzenia, który z tych interfejsów API działa najlepiej, jest testowanie. Dzięki kompatybilności Unity z obydwoma API, możemy stworzyć projekt i przetestować przykładową grę z obydwoma API, aby stworzyć benchmark wydajności.
Testy te zostały przeprowadzone zarówno z grafiką 2D, jak i 3D, aby upewnić się, że ich różne potoki nie są istotnym czynnikiem. Każdy test trwa 120 sekund normalnej rozgrywki, a klatki na sekundę są mierzone w celu określenia wydajności. Wszystkie testy zostały przeprowadzone na tym samym komputerze.
Test wydajności 3D: Unity Carting Microgame
Unity Carting Microgame to darmowy szablon, który zawiera wszystko, czego potrzebujesz do zbudowania prostej gry wyścigowej. Zawiera samouczki, ale bardziej interesuje nas sama gra. Zbudowaliśmy Carting Microgame z OpenGL i DirectX, aby porównać ich wydajność, a wyniki były następujące:
Najniższy | Najwyższy | Przeciętny | |
---|---|---|---|
DirectX | 331 | 848 | 365.05 |
OpenGL | 247 | 819 | 283.7 |
DirectX przewyższał OpenGL w naszym teście 3D, osiągając imponującą liczbę klatek na sekundę. Wyniki OpenGL są nadal więcej niż grywalne.
Test wydajności 2D: platformowa mikrogra Unity
Podobnie jak Carting Microgame, Unity Platformer Microgame jest bezpłatna i zawiera świetne narzędzia do nauki. Zgodnie z oczekiwaniami gra 2D w naszych testach wypada lepiej niż gra 3D, ale możesz sam ocenić wyniki.
Najniższy | Najwyższy | Przeciętny | |
---|---|---|---|
DirectX | 599 | 850 | 767.367 |
OpenGL | 302 | 604 | 515.417 |
Jak widać z powyższych wyników, DirectX osiągnął w naszych testach znacznie wyższą średnią liczbę klatek na sekundę. Chociaż różnica może wyglądać dramatycznie, oba wyniki są bardzo grywalne.
OpenGL lub DirectX 11: wnioski dotyczące wydajności
Chociaż wiele osób twierdzi, że OpenGL działa lepiej niż DirectX, to drugie API osiągnęło lepsze wyniki w obu naszych testach. Nie jest to rozstrzygające, ponieważ wiele czynników odgrywa rolę w dyktowaniu wydajności gry, zwłaszcza gdy stają się one bardziej złożone.
DirectX czy OpenGL: którego należy używać do tworzenia gier?
Wybór odpowiedniego graficznego API zależy od kilku czynników. DirectX jest najczęściej używanym graficznym interfejsem API. Wielu twórców gier tworzy swoje gry dla Windows i Xbox przed przeniesieniem ich do OpenGL dla innych platform. Jeśli publikujesz grę wyłącznie poza systemami Windows i Xbox, możesz odnieść korzyści z używania OpenGL od samego początku.
Wydajność jest również czynnikiem, który należy wziąć pod uwagę, chociaż nasze testy pokazują, że jest to dość pomijalne w przypadku korzystania z narzędzi silnika, takich jak Unity. Zasadniczo różnice między tymi dwoma graficznymi interfejsami API mają znaczenie tylko dla tych, którzy szukają konkretnych funkcji niszowych.