GNU/Linux >> Znalost Linux >  >> Linux

Proč neexistuje rozhraní DirectX API pro Linux?

Proč prostě nepoužít OpenGL? Podporuje všechny funkce DirectX. Máte konkrétní důvod používat DirectX? Z nějakého důvodu Microsoft vytvořil DirectX a myslím, že neviděli žádnou potřebu umožnit jeho spuštění na Linuxu.

Hry DirectX můžete spouštět v Linuxu pomocí Wine. XNA můžete na Linuxu naprogramovat pomocí MonoGame. Ale všechny tyto používají OpenGL k poskytování hardwarově akcelerovaného vykreslování. AFAIK, OpenGL bylo (a pravděpodobně bude) jedinou možností na Linuxu v dohledné budoucnosti.

Je možné napsat vlastní implementaci DirectX? Jistě – ale vyžaduje to psaní ovladačů, proprietární znalosti a pravděpodobně příliš vysoké náklady na to, aby z toho někdo OPRAVDU těžil.

EDIT:V dnešní době je DXVK velmi reálným a výkonným způsobem spouštění aplikací DirectX na Linuxu.


DirectX je oblek API:

  • Direct3D (kreslení 3D grafiky)
  • Grafická infrastruktura DirectX (výčet adaptérů a monitorů a správa swapovacích řetězců)
  • Direct2D (kreslení 2D grafiky)
  • DirectWrite (fonty)
  • DirectCompute (GPU Computing)
  • DirectSound3D (přehrávání 3D zvuků)
  • Média DirectX (DirectAnimation pro 2D/3D webovou animaci, DirectShow pro přehrávání multimédií a streamování médií, DirectX Transform pro webovou interaktivitu a Direct3D Retained Mode pro vyšší úroveň 3D grafiky)
  • Diagnostika DirectX (nástroj pro diagnostiku a generování zpráv o komponentách souvisejících s DirectX, jako jsou audio, video a vstupní ovladače)
  • Mediální objekty DirectX (podpora streamovaných objektů, jako jsou kodéry, dekodéry a efekty)
  • Přímé nastavení (instalace komponent DirectX a detekce aktuální verze DirectX)

Komponenty DirectX jsou zastaralé, ale stále jsou podporovány

  • DirectDraw
  • DirectInput
  • Přímé přehrávání
  • DirectSound
  • DirectMusic

Jak můžete vidět, mnoho částí DirectX obleku API by bylo potřeba přepsat s funkčností pro ovladače napsané pro Linux. Také některé části obleku DirectX budou pravděpodobně volat do operačního systému Windows a tento kód by se musel přepsat pro počítač s Linuxem, aniž by došlo k porušení částí DirectX nebo operačního systému Windows, které byly vytvořeny kopií.

Ano, můžete napsat open source API oblek, který dělá stejné věci jako DirectX pro Linux, ale bez velké znalosti zvukových a grafických ovladačů/podpory jejich výrobců pro Linux by to byl velmi těžký úkol.

Nicméně, pokud váš dotaz byl spíše "Mohu získat/zapsat něco, abych mohl spouštět hry a programy vytvořené pomocí DirectX pro běh na Linuxu?" v tom smyslu, zkrátka ne kvůli pravděpodobnějšímu porušení autorských práv.


AFAIK, DirectX obsahuje 3 části

  • Ovladač dodavatele (poskytuje nízkoúrovňové rozhraní API definované DX)
  • Knihovna DirectX (k přístupu k hardwaru používejte nízkoúrovňové rozhraní API definované DX, poskytuje rozhraní DirectX API)
  • Software (použijte rozhraní DirectX API, např. hru)

Neexistuje žádný ovladač poskytující nízkoúrovňové API definované DX na linuxu, takže i to je možné poskytnout knihovnu DirectX, ale nebude to fungovat bez správného ovladače dodavatele a nevidím, zda se nějaký dodavatel chystá. vytvořit jeden pro jejich hardwarovou platformu.


Vaše otázka je v roce 2019 chybná. DXVK je implementace implementace D3D11 a D3D10 pro Linux pomocí Vulkan a Wine

Mesa má také nativní implementaci Direct3D 9, ale pokud vím, nikdo ji kromě vína nepoužívá


Linux
  1. Proč Linux? – Některé důvody pro převod na Linux

  2. Existuje STDCALL v Linuxu?

  3. Existuje alternativa pro JTS TestBuilder na Linuxu?

  1. Proč mě moje potřeba kontroly přiměla přejít na Linux

  2. Linux – nástroj pro měření kvality entropie?

  3. Linux vs Windows – Proč je Linux lepší pro programování a vývoj webu

  1. Existuje grafické uživatelské rozhraní C++ gdb pro Linux?

  2. Proč nevidím MSG_EOR pro SOCK_SEQPACKET na linuxu?

  3. Existuje samostatný Flash Player pro Linux?