Czy jest jakaś korzyść z używania DX10 / 11 do gry 2D?

10

Nie jestem do końca zaznajomiony z zestawem funkcji wprowadzonym przez sprzęt klasy DX10 / 11. Jestem niejasno zaznajomiony z nowymi etapami dodanymi do programowalnego potoku graficznego, takimi jak moduł cieniujący geometrię, moduł cieniujący obliczenia i nowe etapy teselacji. Nie widzę jednak, aby którekolwiek z nich miało znaczącą różnicę w grze 2D.

Czy istnieje jakiś ważny powód, aby przejść na DX10 / 11 (lub odpowiedniki OpenGL) dla gry 2D, czy też rozsądniej byłoby pozostać przy DX9, biorąc pod uwagę, że znaczna część rynku nadal działa na starszych technologiach (np. Luty 2012 Ankiety Steam wskazują, że około 17% użytkowników nadal korzysta z systemu Windows XP)?

David Gouveia
źródło

Odpowiedzi:

5

To zależy od tego, co robisz. Jeśli używasz Direct3D, jedynym powodem zmiany jest uzyskanie dostępu do funkcji sprzętowych, których inaczej nie można uzyskać.

W przypadku gier 2D teoretycznie możliwe jest, że niektóre funkcje mogą Cię zainteresować. Na przykład OpenCL lub DirectCompute. Civilization V korzysta z DirectCompute do dekompresji tekstur. To znacznie skraca czas ładowania, ponieważ musi tylko ładować skompresowane dane. A gry 2D często mają dużo obrazów. Jeśli czas ładowania stanowi problem, może to pomóc.

OpneCL powinien być dostępny na wszystkich urządzeniach GeForce 8xxx i nowszych. W ATI jest dostępny na HD 4xxx i lepszym sprzęcie.

Powiedziałbym, że największą funkcją, jakiej możesz użyć w DX11, jest możliwość bardziej arbitralnego odczytu i zapisu obrazów w shaderach. Może to być przydatne w przypadku niektórych specjalistycznych efektów. Nie mogę teraz wymyślić żadnego ... co powinno powiedzieć, jak prawdopodobne jest to ważne.

Ogólnie rzecz biorąc, powiedziałbym, że jeśli używasz D3D, prawdopodobnie nie zyskasz wiele. A jeśli jeszcze nie rozumiesz, jakie są nowe funkcje i chcesz z nich korzystać w swojej grze, prawie na pewno nie zyskasz wiele. Większość z nich będzie bardziej złożona.

OpenGL jest inny z jednego ważnego powodu. OpenGL 2.1 (mniej więcej odpowiednik D3D9) jest do bani jako API. OpenGL 3.3 (oraz kilka nowszych rozszerzeń, które działają na sprzęcie 3.3) znacznie poprawia API. Jawna lokalizacja atrybutów, separacja programów cieniujących, wszystko w pakiecie 420 języków cieniowania i tak dalej.

Niektóre z nich działają wystarczająco dobrze w formie rozszerzenia w stosunku do 2.1. Niektóre z nich ... nie. Nadal nie jestem pewien, czy można używać jawnych lokalizacji atrybutów z attributedeklaracjami (przed bieżącą inskładnią). Pakiet cieniowania 420 mówi konkretnie, że nie działa z wersjami GLSL wcześniejszymi niż 1.30 (aka: OpenGL 3.0).

Nie oznacza to, że GL 2.1 jest bezużyteczny. Jest to z pewnością funkcjonalne i łatwe w obsłudze, po prostu nie sprawia przyjemności. Chociaż niektóre sterowniki, które je implementują, nie nadają się do serwisowania. Sprzęt DX9 ATI nie jest już obsługiwany, więc te sterowniki są naprawdę wadliwe. Intel nigdy nie przejmował się OpenGL, więc używanie shaderów na ich sprzęcie to szczęście.

Ale osobiście, jeśli twoja baza użytkowników na to pozwala, poleciłbym GL 3.3, jeśli używasz OpenGL. Jeśli nie, będziesz musiał poradzić sobie z problemami w wersji 2.1.

Nicol Bolas
źródło
5

Myślę, że powinieneś rozważyć kilka rzeczy:

  • Jeśli masz dobrze przetestowany silnik D3D9, prawdopodobnie nie warto przenosić go na D3D11, jeśli nie skorzystasz z nowych funkcji. Zaczynając od zera D3D11 jest znacznie bardziej kuszące.

  • Jaka będzie data premiery Twojej gry? XP przestanie być obsługiwany za nieco ponad dwa lata, a jeśli spojrzysz na dane historyczne, baza instalacyjna XP spada dość szybko (~ 1% / miesiąc na Steamie).

  • Zastanów się, jaka część 17% użytkowników XP miałaby komputer spełniający minimalną specyfikację twojej gry pod D3D9. Im wyższy, tym bardziej wart jest ich wsparcia.

  • DX10 jest przeważnie bezcelowe w nowych projektach. DX11 działa na tych samych systemach operacyjnych i sprzęcie (poprzez poziomy funkcji).

  • DX11 obsługuje renderer oprogramowania (WARP) jako urządzenie rezerwowe, które może być wystarczająco szybkie, aby uruchomić grę z niskimi wymaganiami GPU.

  • Natywny DX9 obsługuje więcej funkcji niż D3D11, gdy używa dowolnego poziomu funkcji D3D9. Na szczęście sprzęt DX9 w komputerach obsługujących DX10 jest rzadkością.

  • Sprzęt DX10 / 11 ma znacznie mniej zróżnicowane możliwości, więc jeśli sprawisz, że sprzęt DX9 używa WARP, nie musisz się martwić o niezręczne ograniczenia związane z takimi rzeczami, jak brak dwóch mocy tekstur lub niewygodne mapowanie piksel-piksel .

  • Jeśli twoja gra będzie wymagała intensywnego sprzętu, DX11 ma kilka dodatkowych sztuczek dostępnych w celu zwiększenia wydajności. Na przykład wielowątkowy kod rysowania.

Adam
źródło
Jestem trochę zdezorientowany co do poziomów funkcji. Jeśli rozwijam się przy użyciu DX11, ale kieruję się poziomem funkcji DX9, rozumiem, że będzie działał na sprzęcie DX9. Ale czy nadal będzie wymagało środowiska uruchomieniowego DX11, tj. Czy będzie działało w systemie Windows XP?
David Gouveia
DX11 w ogóle nie działa na XP. Poziomy funkcji umożliwiają używanie interfejsu API DX11 ze starszym sprzętem. Sprawdź msdn.microsoft.com/en-us/library/ff476876%28v=vs.85%29.aspx, aby uzyskać szczegółowe informacje na temat tego, na co pozwala każdy poziom funkcji.
Adam
1

Same shadery geometrii są powodem do użycia D3D10 / 11, jeśli planujesz mieć dużą liczbę cząstek lub duszków.

DirectCompute można również wykorzystać do uzyskania przyjemnych prędkości.

Osobiście posiadanie znacznie czystszego i ładniejszego API D3D10 / 11 jest wystarczającym powodem, aby nigdy więcej nie dotykać D3D9 lub OpenGL w przypadku jakichkolwiek projektów opartych tylko na systemie Windows. Jednak w rzeczywistości potrzeba celowania w urządzenia mobilne za pomocą GL | ES i wciąż sporych tłumów WinXP wymaga unikania D3D10 / 11 i trzymania się D3D9 lub OpenGL.

Pamiętaj, że wybranie trasy OpenGL pozwala uzyskać shadery geometrii, OpenCL i inne nowsze funkcje sprzętowe nawet w WinXP.

Sean Middleditch
źródło