2012-06-20 9 views
11

Nach Berücksichtigung der Treiber-Implementierung für DirectX-API auf Windows-Systemen für moderne Grafikkarten habe ich mich gefragt, warum diese Implementierung nicht auf Nicht-Windows-System, vor allem Linux, verfügbar ist.Warum gibt es kein DirectX API für Linux?

Da diese Funktionalität offensichtlich fehlt, kann ich nur annehmen, dass es einen guten Grund gibt, für den ich blind bin, aber in meinem primitiven Verständnis sehe ich die DirectX-Aufrufe einfach als Funktionseinstiegspunkte auf dem Hardwaregerät . Und ich beziehe mich nicht auf eine Kompatibilitätsschicht (vor allem WINE, ein Projekt, das mich jeden Tag begeistert), sondern eine Bibliothek, die direkte Hardwareanrufe tätigt.

Ist es möglich, eine Open Source-Version von directx zu erstellen? Wäre es möglich, aber obszön schwierig?

+0

Es gibt keine "Abwesenheit dieser Funktionalität". Linux bietet andere, nicht von Microsoft stammende, nicht-proprietäre Grafik-APIs. –

+8

@BenVoigt Sie haben den Punkt der Frage völlig verpasst. Er fragt nicht nach beschleunigter 3D-Grafik-Rendering-Funktionalität, die Linux hat, sondern nach DirectX-Funktionalität, was nicht der Fall ist. –

Antwort

13

AFAIK enthält die DirectX 3 Teile

  • Vendor-Treiber (stellen niedrigen Level-API von DX definiert)
  • DirectX-Bibliothek (API niedriger Ebene verwendet werden, indem DX definiert Hardware zuzugreifen, liefern DirectX API)
  • Software (Verwendung DirectX-API ab. Spiel)

es gibt keinen Fahrer das niedrige Niveau API von DX auf linux definierte die Bereitstellung, so auch ist es möglich, die DirectX Bibliothek zur Verfügung zu stellen, aber es funktioniert nicht ohne den richtigen Herstellertreiber, und ich kann nicht sehen, ob es irgendeinen Anbieter gibt, der einen für ihre Hardwareplattform erstellen wird.

5

Warum nicht einfach OpenGL verwenden? Es unterstützt alle Funktionen von DirectX. Haben Sie einen bestimmten Grund, DirectX zu verwenden? Aus einem Grund, Microsoft made DirectX und ich denke, sie sahen keine Notwendigkeit, es unter Linux laufen zu lassen.

Sie können DirectX games in Linux using Wine ausführen. Sie können XNA unter Linux mit MonoGame programmieren. Aber alle diese verwenden OpenGL, um hardwarebeschleunigtes Rendering bereitzustellen. AFAIK, OpenGL war (und wird wahrscheinlich) die einzige Option für Linux auf absehbare Zeit.

Ist es möglich, eine eigene DirectX-Implementierung zu schreiben? Sicher - aber es beinhaltet das Schreiben von Treibern, proprietärem Wissen und wahrscheinlich zu viel Aufwand, als dass irgendjemand wirklich davon profitieren könnte.

+6

Die Frage kommt vom Usability-Standpunkt, nicht so sehr von der Entwicklung. Wenn die Spieleindustrie DirectX verwendet, dann würde ich gerne wissen, welche Hindernisse es für die Spieleindustrie gibt, bestehende Spiele auf Linux zu portieren. Mit der exakt gleichen Hardware kann ich ein Spiel nativ in einem Betriebssystem ausführen, aber nicht das andere, also in meiner Naivität möchte ich mir vorstellen, dass es so einfach ist, die API-Ebene zu schreiben und dann alles an die Treiber weiterzuleiten. Offensichtlich existiert das nicht so mein Verständnis ist falsch, ich will nur etwas Klärung. – Brian

1

Die Arbeit, um einen Port für DirectX zu erstellen, würde die gleichen Probleme verursachen, wie Sie in WINE begegnen. Es wird nie das gleiche wie unter Windows sein. Von diesem Prinzip abgeleitet müssten Sie OpenGL und verwandte Multi-Plattform-Bibliotheken betrachten.

In diesem Moment wäre WINE das nächste Medium, wenn Sie etwas mit DirectX-Code erreichen möchten, den Sie bereits haben. Andererseits bin ich mir nicht sicher, in welcher Weise Visual Studio oder einfaches Tippen Sie näher an eine fließende Umgebung bringen würde. Die WINE-Bibliotheken sind nicht weit weg von der ursprünglichen, aber es gibt immer Emulation, was zu einem gewissen Punkt in meiner ehrlichen Meinung akzeptabel ist.

Wenn ich mir ansehe, wie großartig Final Fantasy XIV mit vollen Einstellungen auf meinem iMac (2011) lief, denke ich, dass es nicht so schlecht ist, sich auf die Implementierung von WINE zu verlassen. Das Spiel wurde genau wie auf Bootcamp (Windows) auf meinem iMac gerendert.

Wenn Sie wirklich an dieser Front arbeiten möchten, könnten Sie WINE Devs in ihren Foren oder Mailinglisten fragen, wie Sie vielleicht nur die Implementierung ihrer DirectX-Kompatibilität verwenden und diese in Ihrem Projekt verwenden können. Wo Sie vielleicht Bibliotheken aufrufen können, anstatt DirectX über Windows-emulierte Systemaufrufe anzufordern.

Edit: Ich stimme voll und ganz mit der Antwort von user956030 zu.

1

DirectX ist eine Klage von API:

  • Direct3D (Zeichnung 3D-Grafik)
  • DirectX Graphics Infrastructure (Adapter und Monitore Aufzählen und Verwalten von Swap-Ketten)
  • Direct2D (Zeichnen von 2D-Grafiken)
  • DirectWrite (Schriftarten)
  • Directcompute (GPU Computing)
  • DirectSound3D (Wiedergabe von 3D-Sounds)
  • DirectX Media (Directanimation für 2D/3D-Web-Animation, Directshow für Multimedia-Wiedergabe und Streaming-Medien, DirectX für Web-Transformation Interaktivität und Direct3D Retained Mode für übergeordnete 3D-Grafiken)
  • DirectX-Diagnose (Tool zum Diagnostizieren und Generieren von Berichten über DirectX-bezogene Komponenten wie Audio-, Video- und Eingabetreiber)
  • DirectX Media Objects (Unterstützung für Objekte wie Encoder, Decoder-Streaming und Effekte)
  • Direct (Installation von DirectX-Komponenten und die Erfassung der aktuellen DirectX-Version)

DirectX Komponenten veraltet, aber noch unterstützt

  • DirectDraw-
  • Direct
  • Direct
  • DirectSound-
  • Direct

Wie würden Sie brauchen, viele Teile der DirectX-Anzug von API sehen können Treiber mit Funktionalität neu geschrieben werden geschrieben für Linux. Auch einige Teile der DirectX-Anzüge werden wahrscheinlich Aufrufe an das Windows-Betriebssystem machen, und dieser Code müsste für einen Linux-Rechner neu geschrieben werden, ohne die kopierten Teile von DirectX oder Windows zu verletzen.

Ja, Sie könnten eine Open-Source-API-Anwendung schreiben, die das Gleiche wie DirectX für Linux tut, aber ohne ein großes Wissen über Sound- und Grafiktreiber/Unterstützung durch ihre Hersteller für Linux wäre das eine sehr schwierige Aufgabe machen.

Allerdings, wenn Sie eine Frage war mehr "Kann ich etwas bekommen/schreiben, um Spiele und Programme mit DirectX auf Linux laufen zu lassen?" in seiner Bedeutung, kurz gesagt wegen der wahrscheinlicheren Urheberrechtsverletzung.

-1

DirectX ist ein entworfen Anstands Produkte für Microsoft Ziele, so dass für diese sehr ungewöhnlich wäre zu geschehen

Es gibt zwei weitere Stücke von Software, die in den Sinn, SDL und OpenGL kommen

OpenGL stellt die Hardware Alternative zu DirectX, und SDL arbeitet mit OpenGL, um die Softwareunterstützung zu bieten, die Sie von DirectX erwarten würden