Gibt es einen Grund, Direct3D OpenGL vorzuziehen?

10

So lese ich diese , ich irgendwie den Grund bekam , warum viel mehr Spiele auf Microsoft Windows gibt es als auf jedem anderen O. Das Hauptproblem war, dass Direct3D OpenGL vorgezogen wird.

Was ich nicht verstehe ist, warum ein Entwickler die Kompatibilität opfern sollte? Das ist einfach ein finanzieller Verlust für das Unternehmen. Ich verstehe, dass OpenGL eine Art Chaos ist, aber das sollte für Experten kaum ein Problem sein. Selbst wenn es so ist, denke ich, dass die Leute einen Schritt weiter gehen würden, als einen finanziellen Verlust zu erleiden.

Auch wenn ich mich nicht irre, verwenden viele plattformübergreifende Anwendungen sowohl Direct3D als auch OpenGL. Ich denke, sie wechseln zwischen den APIs.

Das ist seltsam, da sie nur OpenGL verwenden können. Warum sollte man sich überhaupt für Direct3D interessieren?

Die Frage ist also, ob es technische Probleme mit OpenGL gibt oder ob Direct3D Unterstützung bietet, die OpenGL fehlt.


Ich bin mir bewusst, dass diese Frage möglicherweise nicht zum Thema gehört oder zu weit gefasst ist. Ich habe mein Bestes gegeben, um sie einzugrenzen.

A --- B.
quelle
Suchen Sie etwas anderes dieses ?
Trichoplax
2
Übrigens habe ich vor ein paar Jahren eine ähnliche Frage auf GameDev.SE beantwortet .
Nathan Reed
1
Hier ist eine gute Lektion der Geschichte, die Ihre Frage
irgendwie
1
@NathanReed "Es ist also möglich, dass wir wieder zu Entwicklern mit mehreren Plattformen zurückkehren, die OpenGL unter Windows verwenden." Und jetzt, 3 Jahre später, würden Sie sagen, dass dies geschehen ist?
Rotem
2
@Rotem Ich glaube nicht, nein. OGL (und jetzt Vulkan) ist heute besser in der Aufrechterhaltung der Funktionsparität mit D3D als früher, aber AFAICT, die GPU-Anbieter, priorisieren D3D-Treiber weiterhin für Bugfixes und Leistungsverbesserungen, und die meisten Spiele / Engines verwenden unter Windows standardmäßig immer noch D3D. Eine bemerkenswerte Ausnahme sind die idTech-Engines , die alle unter Windows OGL verwenden.
Nathan Reed

Antworten:

9

Über die Tatsache, dass es mehr Spiele für Windows gibt, gibt es einige Gründe

  1. Windows hat den größten Marktanteil und in der Vergangenheit war die Entwicklung plattformübergreifender Spiele komplizierter als heute.
  2. DirectX bietet weitaus bessere Tools für die Entwicklung (z. B. Debugging).
  3. Große Innovationen werden in der Regel zuerst in DirectX erstellt / implementiert und dann in OpenGL portiert / implementiert.
  4. Was Windows und Linux betrifft, muss man berücksichtigen, dass ein tatsächlicher Standard aus Marketing- und historischen Gründen (siehe Warum bevorzugen Spieleentwickler Windows? | Software Engineering , wie ich in den Kommentaren sagte) seine Trägheit hat .

Die Trägheitssache ist sehr wichtig. Wenn Ihr Team für DirectX entwickelt und 90% des Marktes anspricht (na ja ... wenn Sie Spiele auf dem PC spielen, haben Sie wahrscheinlich Fenster, also ... 99% des Marktes?), Warum sollten Sie in OpenGL investieren? Wenn Sie bereits in OpenGL entwickeln und wieder 99% des Marktes ansprechen, werden Sie so lange wie möglich daran festhalten. Zum Beispiel ist Id Tech von Id Software eine ausgezeichnete Spiel-Engine (die die DOOM-Serie antreibt), die OpenGL verwendet.

Zum Thema Ihrer Diskussion ein Kommentar.

Bis heute gibt es viele, viele APIs, und es ist üblich, eine Game Engine zu verwenden, die über sie abstrahiert. Betrachten Sie zum Beispiel das

  • Auf den meisten mobilen Plattformen müssen Sie OpenGl ES verwenden.
  • Auf dem PC können Sie sowohl DirectX als auch OpenGL verwenden
  • Ich denke auf XBOX muss man DirectX verwenden.
  • Ich denke, dass Sie auf PS ihre eigene API verwenden.
  • Mit alter Hardware verwenden Sie DirectX9 oder OpenGL 3 oder OpenGL ES 2.
  • Mit neuerer Hardware können (und möchten) Sie DirectX 11, OpenGL 4, OpenGL ES 3 verwenden.

Mit dem Aufkommen der neuen Low-Overhead-APIs, die einen wichtigen Wendepunkt für die grafische Programmierung darstellen, gibt es kürzlich DirectX 12 für Windows und XBOX, Metal für iOS und Vulkan (das neue OpenGL) für Windows und Linux (einschließlich Android und Tizen) ).

Es gibt immer noch Spiele, die nur auf Windows und XBOX abzielen, aber meiner Meinung nach kann dies heute nur eine Marketing-Wahl sein.

Darius
quelle
Es gibt also keine Leistungsgründe, um Direct3D zu bevorzugen?
A --- B
@ritwik sinha DirectX 11 unterstützt Multithreading-Rendering besser als OpenGL 4, aber meines Wissens hat dies zu keinem Unterschied in der Grundstücksleistung geführt. Auf der anderen Seite war der Gewinner von Windows mit DirectX 11 und Linux mit OpenGL 4 der Gewinner von Linux mit OpenGL. In Bezug auf DirectX 12 gegen Vulkan denke ich, dass es zu früh ist, um es zu wissen, aber ich weiß es nicht.
Darius
Ich habe nie mit Direct3D gearbeitet, daher verstehe ich nicht, was Sie unter Multithreading verstehen. Soweit ich weiß, werden verschiedene Threads von Programmierern für verschiedene Aufgaben behandelt. Tut Direct3D dies unter der Haube? Sowieso nette Antwort.
A --- B
1
@ritwik sinha Eine Anwendung von Multithreading auf Echtzeitgrafiken besteht darin, dass Sie verschiedene Threads verwenden können, um Resoruces im Hintergrund zuzuweisen (Textur-Streaming, Vertex-Puffer), während ein Haupt-Thread die Draw-Aufrufe ausführt. Dies ist auch in OpenGL möglich, aber sehr, sehr schwierig. In DirectX 11 können Sie auch Draw-Aufrufe von vielen Threads aus ausführen, um die Leistung zu verbessern. Dies ist jedoch keine gängige Praxis. Ich denke, dass die letzte Version von UnrealEngine4 es schafft. Mit DirectX 12 und Vulkan wird das Multithreading-Rendering jedoch ein echtes Geschäft.
Darius
1

Einige mögliche Gründe:

  • In der Vergangenheit war die Qualität der OpenGL-Treiber sehr unterschiedlich, aber ich bin mir nicht sicher, ob dies mehr der Fall ist.
  • Xbox unterstützt D3D, sodass das Portieren eines Spiels zwischen ihm und dem PC einfacher ist.
  • Debugging-Tools für D3D waren besser als für OpenGL. Zum Glück haben wir jetzt RenderDoc
SurvivalMachine
quelle