GNU/Linux >> Linux Esercitazione >  >> Linux

Perché non esiste un'API DirectX per Linux?

Perché non usare semplicemente OpenGL? Supporta tutte le funzionalità di DirectX. Hai un motivo specifico per usare DirectX? Per quanto riguarda il motivo, Microsoft ha creato DirectX e immagino che non abbiano visto alcuna necessità di consentirne l'esecuzione su Linux.

Puoi eseguire giochi DirectX in Linux usando Wine. Puoi programmare XNA su Linux usando MonoGame. Ma tutti questi utilizzano OpenGL per fornire il rendering con accelerazione hardware. AFAIK, OpenGL è stata (e probabilmente sarà) l'unica opzione su Linux per il prossimo futuro.

È possibile scrivere la propria implementazione di DirectX? Certo, ma comporta la scrittura di driver, conoscenze proprietarie e probabilmente un costo eccessivo perché chiunque ne tragga VERAMENTE vantaggio.

EDIT:In questi giorni, DXVK è un modo molto reale e performante per eseguire applicazioni DirectX su Linux.


DirectX è un insieme di API:

  • Direct3D (disegno di grafica 3D)
  • Infrastruttura grafica DirectX (enumerazione di adattatori e monitor e gestione delle catene di scambio)
  • Direct2D (disegno di grafica 2D)
  • DirectWrite (caratteri)
  • DirectCompute (GPU Computing)
  • DirectSound3D (riproduzione di suoni 3D)
  • Media DirectX (DirectAnimation per animazione web 2D/3D, DirectShow per riproduzione multimediale e streaming multimediale, DirectX Transform per interattività web e Direct3D Retained Mode per grafica 3D di livello superiore)
  • Diagnostica DirectX (strumento per la diagnosi e la generazione di report sui componenti relativi a DirectX, come audio, video e driver di input)
  • Oggetti multimediali DirectX (supporto per oggetti in streaming come codificatori, decodificatori ed effetti)
  • Installazione diretta (installazione dei componenti DirectX e rilevamento della versione corrente di DirectX)

Componenti DirectX obsoleti, ma ancora supportati

  • DirectDraw
  • Input diretto
  • Riproduzione diretta
  • DirectSound
  • Musica diretta

Come puoi vedere, molte parti della tuta DirectX delle API dovrebbero essere riscritte con funzionalità per i driver scritti per Linux. Inoltre, è probabile che alcune parti della tuta DirectX effettuino chiamate al sistema operativo Windows e quel codice dovrebbe essere riscritto per una macchina Linux senza violare le parti copiate di DirectX o del sistema operativo Windows.

Sì, potresti scrivere una tuta API open source che fa lo stesso tipo di cose di DirectX per Linux, tuttavia senza una grande conoscenza dei driver audio e grafici/supporto da parte dei loro produttori per Linux, sarebbe un compito molto difficile da fare.

Tuttavia, se la tua domanda fosse più di un "Posso ottenere/scrivere qualcosa per poter eseguire giochi e programmi realizzati con DirectX per l'esecuzione su Linux?" nel suo significato, in breve, no a causa di una più probabile violazione del copyright.


AFAIK, DirectX contiene 3 parti

  • Driver del fornitore (fornisce API di basso livello definite da DX)
  • Libreria DirectX (usa l'API di basso livello definita da DX per accedere all'hardware, fornisci l'API DirectX)
  • Software (usa API DirectX, ad esempio gioco)

Non ci sono driver che forniscono l'API di basso livello definita da DX su Linux, quindi anche è possibile fornire la libreria DirectX, ma non funzionerà senza il driver del fornitore appropriato e non riesco a vedere se c'è qualche fornitore sta andando per crearne uno per la loro piattaforma hardware.


La tua domanda è sbagliata nel 2019. DXVK è un'implementazione dell'implementazione D3D11 e D3D10 per Linux che utilizza Vulkan e Wine

Anche mesa ha un'implementazione nativa di Direct3D 9 ma, per quanto ne so, nessuno lo usa tranne wine


Linux
  1. Linux:strumento per misurare la qualità dell'entropia?

  2. Esiste una GUI gdb C++ per Linux?

  3. C'è STDCALL in Linux?

  4. Perché non vedo MSG_EOR per SOCK_SEQPACKET su Linux?

  5. Esiste un'alternativa per JTS TestBuilder su Linux?

Perché mi piace usare bspwm per il mio window manager Linux

Perché scegliere Xfce per il tuo desktop Linux leggero

Perché scegliere Budgie per il tuo desktop Linux

Perché usare il desktop Pantheon per Linux Elementary OS

Come prepararsi al maltempo su Linux

Esiste un client OneDrive per Linux?