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 attribute
deklaracjami (przed bieżącą in
skł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.
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.
źródło