GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum gibt es keine DirectX-API für Linux?

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

Sie können DirectX-Spiele unter Linux mit 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) auf absehbare Zeit die einzige Option unter Linux sein.

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

BEARBEITEN:Heutzutage ist DXVK eine sehr reale und leistungsfähige Möglichkeit, DirectX-Anwendungen unter Linux auszuführen.


DirectX ist eine Suite von APIs:

  • Direct3D (Zeichnen von 3D-Grafiken)
  • DirectX-Grafikinfrastruktur (Auflisten von Adaptern und Monitoren und Verwalten von Swapchains)
  • Direct2D (Zeichnen von 2D-Grafiken)
  • DirectWrite (Schriftarten)
  • DirectCompute (GPU-Computing)
  • DirectSound3D (Wiedergabe von 3D-Sounds)
  • DirectX-Medien (DirectAnimation für 2D/3D-Webanimation, DirectShow für Multimedia-Wiedergabe und Streaming-Medien, DirectX-Transformation für Webinteraktivität und Direct3D Retained Mode für 3D-Grafiken auf höherer Ebene)
  • DirectX-Diagnose (Tool zum Diagnostizieren und Generieren von Berichten zu DirectX-Komponenten wie Audio-, Video- und Eingabetreibern)
  • DirectX-Medienobjekte (Unterstützung für Streaming-Objekte wie Encoder, Decoder und Effekte)
  • Direkte Einrichtung (Installation von DirectX-Komponenten und Erkennung der aktuellen DirectX-Version)

DirectX-Komponenten veraltet, aber noch unterstützt

  • DirectDraw
  • DirectInput
  • DirectPlay
  • DirectSound
  • DirectMusic

Wie Sie sehen können, müssten viele Teile der DirectX-Suite von APIs mit Funktionalität für für Linux geschriebene Treiber umgeschrieben werden. Außerdem werden einige Teile der DirectX-Suite wahrscheinlich Aufrufe an das Windows-Betriebssystem senden, und dieser Code müsste für einen Linux-Computer neu geschrieben werden, ohne dass die kopierten Teile von DirectX oder dem Windows-Betriebssystem verletzt werden.

Ja, Sie könnten einen Open-Source-API-Anzug schreiben, der das Gleiche tut wie DirectX für Linux, aber ohne große Kenntnisse über Sound- und Grafiktreiber/Unterstützung durch ihre Hersteller für Linux wäre dies eine sehr schwierige Aufgabe.

Wenn Ihre Frage jedoch eher eine Frage war:"Kann ich etwas bekommen / schreiben, um mit DirectX erstellte Spiele und Programme unter Linux ausführen zu können?" in seiner Bedeutung, kurz gesagt nein wegen wahrscheinlicherer Urheberrechtsverletzung.


AFAIK, DirectX besteht aus 3 Teilen

  • Vendor-Treiber (stellt eine von DX definierte Low-Level-API bereit)
  • DirectX-Bibliothek (von DX definierte Low-Level-API verwenden, um auf Hardware zuzugreifen, DirectX-API bereitstellen)
  • Software (DirectX-API verwenden, z. B. Spiel)

Es gibt keinen Treiber, der die von DX unter Linux definierte Low-Level-API bereitstellt, also ist es sogar möglich, die DirectX-Bibliothek bereitzustellen, aber es funktioniert nicht ohne den richtigen Anbietertreiber, und ich kann nicht sehen, ob es einen Anbieter gibt um eine für ihre Hardwareplattform zu erstellen.


Ihre Frage ist 2019 falsch. DXVK ist eine Implementierung der D3D11- und D3D10-Implementierung für Linux mit Vulkan und Wine

Mesa hat auch eine native Direct3D 9-Implementierung, aber meines Wissens verwendet sie niemand außer wine


Linux
  1. Warum mich mein Bedürfnis nach Kontrolle dazu gebracht hat, zu Linux zu wechseln

  2. Gibt es STDCALL unter Linux?

  3. Gibt es einen eigenständigen Flash Player für Linux?

  4. Linux-Dienste:Gibt es eine GUI für Dienste?

  5. Gibt es eine Alternative für JTS TestBuilder unter Linux?

Warum ich bspwm so gerne für meinen Linux-Fenstermanager verwende

Warum Xfce für Ihren leichtgewichtigen Linux-Desktop wählen?

Warum Budgie für Ihren Linux-Desktop wählen

Warum den Pantheon-Desktop für Linux Elementary OS verwenden

Wie man sich unter Linux auf schlechtes Wetter vorbereitet

Gibt es einen OneDrive-Client für Linux?