Gibt es einen Vorteil bei der Verwendung von DX10 / 11 für ein 2D-Spiel?

10

Ich bin mit den Funktionen der Hardware der DX10 / 11-Klasse nicht ganz vertraut. Ich bin vage mit den neuen Stufen vertraut, die der programmierbaren Grafik-Pipeline hinzugefügt wurden, wie z. B. dem Geometrie-Shader, dem Compute-Shader und den neuen Tessellationsstufen. Ich sehe jedoch nicht, wie viel davon für ein 2D-Spiel einen großen Unterschied macht.

Gibt es einen zwingenden Grund, für ein 2D-Spiel auf DX10 / 11 (oder die OpenGL-Entsprechungen) umzusteigen, oder wäre es klüger, bei DX9 zu bleiben, wenn man bedenkt, dass ein erheblicher Marktanteil immer noch auf älteren Technologien (z Februar 2012 Steam-Umfragen listen rund 17% der Benutzer auf, die noch Windows XP verwenden.

David Gouveia
quelle

Antworten:

5

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 attributeDeklarationen zu verwenden (vor der aktuellen inSyntax). 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.

Nicol Bolas
quelle
5

Ich denke, Sie sollten einige Dinge beachten:

  • Wenn Sie eine gut getestete D3D9-Engine haben, lohnt es sich wahrscheinlich nicht, auf D3D11 zu portieren, wenn Sie die neuen Funktionen nicht nutzen. Wenn Sie von vorne anfangen, ist D3D11 viel verlockender.

  • Wie bald wird das Erscheinungsdatum Ihres Spiels sein? XP wird in etwas mehr als zwei Jahren nicht mehr unterstützt, und wenn Sie sich die historischen Daten ansehen, fällt die XP-Installationsbasis ziemlich schnell ab (~ 1% / Monat bei Steam).

  • Überlegen Sie, welcher Anteil der 17% der XP-Benutzer einen PC haben würde, der die Mindestspezifikation für Ihr Spiel unter D3D9 erfüllt. Je höher das ist, desto lohnender ist es, sie zu unterstützen.

  • DX10 ist für neue Entwicklungen meist sinnlos. DX11 läuft auf denselben Betriebssystemen und derselben Hardware (über Funktionsstufen).

  • DX11 unterstützt einen Software-Renderer (WARP) als Fallback-Gerät, der schnell genug sein kann, um ein Spiel mit geringen GPU-Anforderungen auszuführen.

  • Native DX9 unterstützt mehr Funktionen als D3D11, wenn eine der D3D9-Funktionen verwendet wird. Zum Glück ist DX9-Hardware in DX10-fähigen PCs selten.

  • DX10 / 11-Hardware verfügt über viel weniger unterschiedliche Funktionen. Wenn Sie also DX9-Hardware mit WARP verwenden, müssen Sie sich keine Gedanken über unangenehme Einschränkungen machen, z. B. durch Texturen ohne Zweierpotenz oder umständliche Texel-Pixel-Zuordnung .

  • Wenn Ihr Spiel hardwareintensiv sein soll, stehen in DX11 einige zusätzliche Tricks zur Verfügung, um die Leistung zu steigern. Zum Beispiel Multithreading des Zeichencodes.

Adam
quelle
Ich bin etwas verwirrt über die Funktionsstufen. Wenn ich mit DX11 entwickle, aber auf eine DX9-Funktionsstufe abziele, kann diese auf DX9-Hardware ausgeführt werden. Aber wird es weiterhin die DX11-Laufzeit erfordern, dh wird es unter Windows XP ausgeführt?
David Gouveia
DX11 funktioniert unter XP überhaupt nicht. Mit den Funktionsstufen können Sie die DX11-API mit älterer Hardware verwenden. Unter msdn.microsoft.com/en-us/library/ff476876%28v=vs.85%29.aspx finden Sie Details zu den einzelnen Funktionsstufen.
Adam
1

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.

Sean Middleditch
quelle