Es hängt davon ab, was Sie tun. Wenn Sie Direct3D verwenden, besteht der einzige Grund für einen Wechsel darin, Zugriff auf Hardwarefunktionen zu erhalten, die Sie sonst nicht erhalten können.
Bei einem 2D-Spiel ist es theoretisch möglich, dass Sie bestimmte Funktionen interessieren. Zum Beispiel OpenCL oder DirectCompute. Civilization V nutzt DirectCompute zum Dekomprimieren von Texturen. Dies reduziert die Ladezeit erheblich, da nur komprimierte Daten geladen werden müssen. Und 2D-Spiele haben oft viele Bilder. Wenn die Ladezeit ein Problem darstellt, kann dies hilfreich sein.
OpneCL sollte auf allen GeForce 8xxx-Hardware und höher verfügbar sein. Auf ATI ist es auf HD 4xxx und besserer Hardware verfügbar.
Ich würde sagen, die größte Funktion, die Sie in DX11 verwenden könnten, ist die Möglichkeit, Bilder in Shadern willkürlicher zu lesen und zu schreiben. Dies könnte für bestimmte Spezialeffekte nützlich sein. Ich kann mir momentan keine vorstellen ... was Ihnen sagen sollte, wie wahrscheinlich es ist, dass dies wichtig ist.
Im Allgemeinen würde ich sagen, dass Sie mit D3D wahrscheinlich nicht viel gewinnen werden. Und wenn Sie die neuen Funktionen noch nicht verstehen und sie in Ihrem Spiel verwenden möchten, werden Sie mit ziemlicher Sicherheit nicht viel gewinnen. Die meisten von ihnen werden komplexer.
OpenGL unterscheidet sich aus einem Hauptgrund. OpenGL 2.1 (die mehr oder weniger gleichwertig D3D9) ansaugt als API. OpenGL 3.3 (plus einige neuere Erweiterungen, die auf 3.3-Hardware ausgeführt werden) verbessert die API erheblich. Explizite Attributposition, Trennung von Shader-Programmen, alles im Shading Language Pack 420 und so weiter.
Einige davon funktionieren in Erweiterungsform gut genug gegen 2.1. Einige von ihnen ... nicht. Ich bin mir immer noch nicht sicher, ob es in Ordnung ist, explizite Attributpositionen mit attribute
Deklarationen zu verwenden (vor der aktuellen in
Syntax). Das Shading Language Pack 420 besagt ausdrücklich, dass es mit GLSL-Versionen vor 1.30 (auch bekannt als: OpenGL 3.0) nicht funktioniert.
Das heißt nicht, dass GL 2.1 unbrauchbar ist. Es ist sicherlich funktional und wartungsfähig, nur nicht angenehm. Obwohl einige Treiber, die Sie finden, dass das Gerät nicht gewartet werden kann. Die DX9-Hardware von ATI wird nicht mehr unterstützt, daher sind diese Treiber wirklich fehlerhaft. Und Intel hat sich nie um OpenGL gekümmert, daher ist die Verwendung von Shadern auf ihrer Hardware ein Glücksfall.
Aber persönlich würde ich, wenn Ihre beabsichtigte Benutzerbasis dies zulässt, auf GL 3.3 umsteigen, wenn Sie OpenGL verwenden. Wenn nicht, müssen Sie sich nur mit den 2.1-Problemen befassen.
Geometrie-Shader allein sind ein Grund, D3D10 / 11 zu verwenden, wenn Sie eine große Anzahl von Partikeln oder Sprites planen.
DirectCompute kann auch für einige nette Geschwindigkeitsvorteile verwendet werden.
Persönlich ist es Grund genug, einfach die weitaus sauberere und schönere API von D3D10 / 11 zu haben, um D3D9 oder OpenGL für Projekte, die nur für moderne Windows-Anwendungen gelten, nie wieder zu berühren. Realistisch gesehen erfordert die Notwendigkeit, mobile Geräte mit GL | ES und der immer noch beträchtlichen WinXP-Menge anzusprechen, die Vermeidung von D3D10 / 11 und die Einhaltung von D3D9 oder OpenGL.
Beachten Sie, dass Sie mit der OpenGL-Route auch unter WinXP Geometrie-Shader, OpenCL und andere neuere Hardwarefunktionen erhalten.
quelle