GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi n'y a-t-il pas d'API DirectX pour Linux ?

Pourquoi ne pas simplement utiliser OpenGL ? Il prend en charge toutes les fonctionnalités de DirectX. Avez-vous une raison particulière d'utiliser DirectX ? Comme raison, Microsoft a créé DirectX et je suppose qu'ils n'ont pas vu le besoin de lui permettre de fonctionner sous Linux.

Vous pouvez exécuter des jeux DirectX sous Linux en utilisant Wine. Vous pouvez programmer XNA sur Linux en utilisant MonoGame. Mais tous utilisent OpenGL pour fournir un rendu accéléré par le matériel. AFAIK, OpenGL a été (et sera probablement) la seule option sur Linux dans un avenir prévisible.

Est-il possible d'écrire votre propre implémentation DirectX ? Bien sûr, mais cela implique l'écriture de pilotes, des connaissances propriétaires et probablement trop de coûts pour que quiconque en profite VRAIMENT.

EDIT :De nos jours, DXVK est un moyen très réel et performant d'exécuter des applications DirectX sur Linux.


DirectX est une suite d'API :

  • Direct3D (dessiner des graphiques 3D)
  • Infrastructure graphique DirectX (énumération des adaptateurs et des moniteurs et gestion des chaînes d'échange)
  • Direct2D (dessiner des graphiques 2D)
  • DirectWrite (polices)
  • DirectCompute (Calcul GPU)
  • DirectSound3D (lecture de sons 3D)
  • DirectX Media (DirectAnimation pour l'animation Web 2D/3D, DirectShow pour la lecture multimédia et le streaming multimédia, DirectX Transform pour l'interactivité Web et Direct3D Retained Mode pour les graphiques 3D de niveau supérieur)
  • Diagnostics DirectX (outil de diagnostic et de génération de rapports sur les composants liés à DirectX, tels que les pilotes audio, vidéo et d'entrée)
  • Objets multimédias DirectX (prise en charge des objets de diffusion tels que les encodeurs, les décodeurs et les effets)
  • Configuration directe (installation des composants DirectX, et détection de la version actuelle de DirectX)

Composants DirectX obsolètes, mais toujours pris en charge

  • DirectDraw
  • DirectInput
  • DirectPlay
  • DirectSound
  • DirectMusic

Comme vous pouvez le constater, de nombreuses parties de la suite d'API DirectX devraient être réécrites avec des fonctionnalités pour les pilotes écrits pour Linux. De plus, certaines parties de la combinaison DirectX vont probablement appeler le système d'exploitation Windows et ce code devrait être réécrit pour une machine Linux sans enfreindre les parties écrites par copie de DirectX ou du système d'exploitation Windows.

Oui, vous pouvez écrire une combinaison d'API open source qui fait le même genre de chose que DirectX pour Linux, mais sans une grande connaissance des pilotes/supports audio et graphiques par leurs fabricants pour Linux, ce serait une tâche très difficile à faire. /P>

Cependant, si votre question était plutôt "Puis-je obtenir/écrire quelque chose pour pouvoir exécuter des jeux et des programmes créés avec DirectX sur Linux ?" dans son sens, en bref non en raison d'une violation plus probable du droit d'auteur.


AFAIK, le DirectX contient 3 parties

  • Pilote fournisseur (fournit une API de bas niveau définie par DX)
  • Bibliothèque DirectX (utilisez l'API de bas niveau définie par DX pour accéder au matériel, fournissez l'API DirectX)
  • Logiciel (utiliser l'API DirectX, ex. jeu)

Il n'y a pas de pilote fournissant l'API de bas niveau définie par DX sur Linux, donc même il est possible de fournir la bibliothèque DirectX, mais cela ne fonctionnera pas sans pilote de fournisseur approprié, et je ne peux pas voir s'il y a un fournisseur va pour en créer un pour leur plate-forme matérielle.


Votre question est fausse en 2019. DXVK est une implémentation de l'implémentation D3D11 et D3D10 pour Linux utilisant Vulkan et Wine

Mesa a également une implémentation native de Direct3D 9 mais à ma connaissance, personne ne l'utilise sauf wine


Linux
  1. Pourquoi Linux ? - Quelques raisons de convertir vers Linux

  2. Linux – Outil pour mesurer la qualité de l'entropie ?

  3. Linux Vs Windows - Pourquoi Linux est meilleur pour la programmation et le développement Web

  4. Existe-t-il STDCALL sous Linux ?

  5. Pourquoi n'y a-t-il pas de gestionnaire de paquets vraiment unifié pour Linux ?

Pourquoi j'aime utiliser bspwm pour mon gestionnaire de fenêtres Linux

Pourquoi choisir Xfce pour votre bureau Linux léger

Pourquoi choisir Budgie pour votre bureau Linux

Pourquoi utiliser le bureau Pantheon pour Linux Elementary OS

Comment se préparer au mauvais temps sous Linux

Existe-t-il un client OneDrive pour Linux ?