Auf welche Konsolen kann ich mit OpenGL abzielen?

7

Ich denke über das technische Design eines Spiels / einer Spiel-Engine mit OpenGL nach und frage mich, ob es aktuelle Konsolen (Xbox360, PS3, Wii U, Xbox One und PS4) gibt, mit denen ich arbeiten könnte, wenn ich dies tue.

Ich habe in Foren viele widersprüchliche Antworten gefunden. Die einzige klare Antwort scheint, dass es für Xboxes unmöglich ist, weil Microsoft die Verwendung von etwas anderem als DirectX, seinem eigenen Produkt, verbietet.

Weiß also endlich jemand, welche Konsolen ein OpenGL-basiertes Spiel unterstützen können?

Aracthor
quelle
Für Xbox ist das richtig, es unterstützt nur D3D. Wii, ich habe keine Ahnung. Sony hat immer eine benutzerdefinierte Implementierung von OpenGL für die PS-Familie bereitgestellt, die manchmal als "PSGL" bezeichnet wird und für einfachere Spiele verwendet werden sollte. Das hochleistungsfähige 3A-Material verwendet sie jedoch selten und implementiert das Rendern mit den spezifischen Hardwareschnittstellen. Je nach Größe und Komplexität des Projekts lautet die Antwort möglicherweise: Keine.
Glampert

Antworten:

4

Wahrscheinlich die einfachste Antwort: Machen Sie sich keine Sorgen, sondern wählen Sie stattdessen das aus, mit dem Sie jetzt am besten arbeiten können (dh was auch immer Sie besser können.

Wenn Sie der Meinung sind, dass Sie eine Engine mit Blick auf Portabilität schreiben sollten ("Spiele erstellen, keine Engines!"), Erstellen Sie eine Renderer-Abstraktionsschicht, damit Sie jedes benötigte Back-End anschließen können.

Während die meisten Desktop-Systeme OpenGL verstehen / haben, benötigen Sie OpenGL ES für die meisten mobilen Plattformen. Daher wäre es nur ein kleiner zusätzlicher Schritt, DirectX auch später hinzuzufügen.

Genauere Details sind meines Wissens sehr schwer zu bekommen, da die meisten Einzelheiten hinter NDAs und ähnlichen Dingen verborgen sind (aus welchem ​​Grund auch immer).

Es ist ziemlich bekannt, dass Microsoft DirectX bevorzugt (und nur unterstützt?), Während Sony OpenGL unterstützt (obwohl ich mir über die Funktionsstufe / Version nicht sicher bin). Da beide eine Entwicklerlizenz benötigen, kommen sie vorerst ohnehin nicht in Frage.

Keine Ahnung von Nintendo, möglicherweise OpenGL oder proprietären Dingen? Sie wollen sowieso, dass Sie auch zuerst Verträge unterschreiben.

Viele andere (Mikro-) Konsolen (wie Ouya, Amazon FireTV usw.) verwenden Android und unterstützen daher OpenGL ES 1.1 sowie OpenGL ES 2.0.

Windows-PCs bieten normalerweise sowohl DirectX als auch OpenGL an. OpenGL ES wird indirekt über Wrapper unterstützt (wie das ANGLE-Projekt von Google ).

Linux- und Mac-basierte Systeme bieten normalerweise OpenGL und OpenGL ES. Es gibt Wrapper für DirectX, obwohl ich mir ziemlich sicher bin, dass dies wirklich nur für die Emulation gilt. Ich habe noch keine anderen gesehen.

Wie Sie sehen, gibt es leider keine "eine Schnittstelle passt für alle" -Lösung.

Wenn Sie sich vorerst auf eine Schnittstelle beschränken möchten (was Sie unbedingt IMO sollten), wählen Sie (modern) OpenGL. Es ermöglicht Ihnen die derzeit einfachste / größte plattformübergreifende Verwendung und erleichtert das Debuggen. Mit einigen Anpassungen (um OpenGL ES anstelle von OpenGL zu verwenden) wird dieser Code auch auf den meisten Telefonen und Mikrokonsolen ausgeführt.

Wenn Sie die Programmierung unter Windows mit Microsoft Visual Studio bevorzugen, ist DirectX möglicherweise eine Option für die Visual Studio-Integration (Grafik-Debugger usw.). Denken Sie daran, dass dies nirgendwo anders funktioniert (außer bei XBox, für die ohnehin eine Entwicklerlizenz erforderlich ist).

Mario
quelle
1
Nun, ich denke eher an eine Engine als an ein Spiel, und wenn mir die Portierung jetzt egal ist, wird es später schwieriger sein, sie hinzuzufügen. Und selbst wenn ich eine Abstraktion mache, um später weitere Implementierungen hinzuzufügen, muss ich die erste auswählen, die implementiert werden soll. Und ich möchte das portabelste zwischen DirectX und OpenGL verwenden.
Aracthor
@Aracthor In diesem Fall gehen Sie mit OpenGL. Ich werde etwas weiter oben erweitern.
Mario
2
@Aracthor Aktualisiert; Wenn Sie die portabelste Schnittstelle wünschen, wählen Sie OpenGL. Auch wenn OpenGL die beliebten Konsolen ignoriert, bietet es eine weitaus größere Unterstützung außerhalb der Windows-Welt.
Mario
2

Keine der von Ihnen aufgelisteten Konsolen verwendet OpenGL als native Rendering-API. Die PS3 unterstützte früher eine proprietäre OpenGL-Variante namens PSGL, war jedoch nie die bevorzugte API, und ich bin mir nicht sicher, ob sie überhaupt noch unterstützt wird. Meines Wissens hat keiner der anderen irgendeine offizielle Unterstützung für OpenGL, obwohl Sie theoretisch ANGLE auf Xbox 360 und Xbox One mit einigen geringfügigen Änderungen verwenden könnten .

Wenn Sie Konsolen mit einer benutzerdefinierten Engine ansprechen möchten, müssen Sie mehrere Rendering-Back-End-APIs unterstützen, da es keine einzige API gibt, die Sie für alle verwenden können. Tatsächlich teilen von den von Ihnen aufgelisteten Konsolen keine zwei dieselbe Rendering-API. Die PS4 und PS3 haben unterschiedliche APIs, ebenso wie die Xbox 360 und Xbox One.

mattnewport
quelle