IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Valve met à disposition « togl »
Une réimplémentation des appels DirectX en OpenGL pour le support Linux

Le , par LittleWhite

22PARTAGES

6  0 
Valve met à disposition « togl » son interface D3D9 vers OpenGL

Valve, le célèbre studio de développement de Half life, Left 4 Dead ou encore Team Fortress, vient de mettre à disposition sur Github son interface de conversion des appels D3D9 vers OpenGL.
Le studio avait présenté son travail durant la GPU Technology Conference dont vous pouvez lire la retranscription de la conférence sur le travail de portage des jeux Valve sous Linux. Cette couche permet de transposer tous les appels faits à D3D9, une bibliothèque uniquement sous Windows en appels OpenGL. Les shaders sont eux aussi convertis durant le processus.
Actuellement, le dépôt n'est pas finalisé. Il manque quelques phases d'améliorations permettant de le rendre plus accessible aux développeurs.

L'histoire de ce code est longue. Le projet a été initié par l'équipe Mac, puis repris par l'équipe Steam et finalement porté par l'équipe Linux, sous Windows. Ce portage a permis une phase de débogage, car les débogueurs OpenGL n'étaient à ce moment-là, disponibles que sous Windows.

Le code est loin d'être parfait. Le premier objectif de celui-ci sont les performances. Pour atteindre cet objectif, beaucoup d'expérimentations ont été réalisées, mais si vous souhaitez connaître comment réaliser un support d'une multitude de machines sous Linux et cela malgré les différences et les défauts des pilotes, il est très intéressant de regarder ce code. Il faut aussi savoir que les pilotes Windows partagent beaucoup de code avec les pilotes Linux, donc le support est souvent au même niveau pour OpenGL, quel que soit le système.
La version du code disponible sur Github n'est pas nécessairement la dernière chez Valve. En effet, chaque jeu possède sa propre branche.

Retrouvez le code de « togl » sur Github.

Votre opinion

Pensez-vous que cette interface sera bénéfique à votre projet ?
Pensez-vous qu'il soit maintenant intéressant de se pencher sur OpenGL ? Trouvez-vous qu'il soit intelligent de faire une surcouche à DirectX ?

Voir aussi

La retranscription de la conférence de Valve sur le portage des jeux sous Linux.

Source

Blog de Rich Geldreich (développeur chez Valve)

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de germinolegrand
Membre expert https://www.developpez.com
Le 13/03/2014 à 14:30
Je trouve qu'il est extrêmement intelligent d'avoir fait une implémentation de DirectX en OpenGL. Non seulement cela facilite le portage de jeux Windows sous d'autres OS, mais en plus cela permet une transition vers OpenGL plus aisée. (oui je suis à fond pour le multiplateforme)
4  0 
Avatar de LittleWhite
Responsable 2D/3D/Jeux https://www.developpez.com
Le 17/03/2014 à 14:07
C'est pour cela que l'on parle bien, notamment dans le titre, de D3D9 (la partie bibliothèque 3D de DirectX 9).
Après, il y a souvent l'amalgame DirectX/D3D, car D3D c'est la plus grosse partie.
1  0 
Avatar de dfiad77pro
Membre chevronné https://www.developpez.com
Le 13/03/2014 à 15:47
D'après mes souvenir les API DirectX10 et 11 ont beaucoup changés par rapport au 9.
Faudra t-il presque tout refaire pour migrer les Jeux DX10/11 ?
0  0 
Avatar de LittleWhite
Responsable 2D/3D/Jeux https://www.developpez.com
Le 13/03/2014 à 16:14
Bonne remarque.
Dans la conférence, ils indiquent les correspondances de versions suivantes :

DirectX 9 OpenGL 2 Shaders
DirectX 10 OpenGL 3 Bibliothèque orientée flux, Geometry shader
DirectX 11 OpenGL 4 Tesselation, Compute shaders

Donc le portage est totalement possible, OpenGL disposent des fonctionnalités nécessaires. Ensuite, oui, il faudra nécessairement faire la surcouche pour les appels DirectX 10/11, mais on peut encore garder le même code OpenGL (juste modification du nom de la fonction, si vous voulez). Pour les nouvelles fonctionnalités apportées par les bibliothèques, alors oui, il faudra un peu plus de travail.
Notez aussi, et Valve le dit dans la conférence, leur but est de supporter le plus de machines possible. Pour ce faire, le choix est évidemment DirectX 9/OpenGL 2. S'ils veulent bouger sur DirectX 11 (DirectX 10 n'est pas tant que ça utilisé, les jeux ont plus fait la transition DirectX 9 -> DirectX 11), ils perdent une "grande" partie du marché qu'ils visent. Du coup, ils n'ont pas intérêt à changer trop dans cette politique. Pour OpenGL 2, l'histoire est similaire, sauf que le gros avantage qu'ils ont avec OpenGL et leur surcouche, c'est qu'ils peuvent dire : "Ok, la machine sous Windows XP à OpenGL 3, donc on peut utiliser les nouveautés des cartes graphiques". Chose qui n'est pas possible avec DirectX 10, car Microsoft ne propose pas la bibliothèque sur Windows XP. (Valve parle de Windows XP, pour le marché asiatique, principalement, qui utilise encore beaucoup ce système).
Donc, non, il ne faudra pas tout refaire, car la couche OpenGL est installé. Même si les shaders ont changé de DirectX 9 à DirectX 11, la partie OpenGL a beaucoup moins changé.
0  0 
Avatar de LittleWhite
Responsable 2D/3D/Jeux https://www.developpez.com
Le 13/03/2014 à 22:24
Je viens de trouver cette ressource : http://stats.unity3d.com/web/gpu.html .
Regardez bien le dernier graphe. Moins de 50 % peut faire fonctionner DirectX 10 (et ça, c'est que les PC Windows).
0  0 
Avatar de Washmid
Membre averti https://www.developpez.com
Le 14/03/2014 à 8:17
[troll]Je serai Microsoft je m'empresserai d'attaquer Valve pour la violation de brevets quelconques ou autre chose du genre.[/troll]

En tout cas c'est une super nouvelle !
0  0 
Avatar de nirgal76
Membre chevronné https://www.developpez.com
Le 17/03/2014 à 13:49
Je connais pas trop tout ça mais OpenGL c'est seulement le graphique non ? (d'ou son nom d'ailleurs) alors que DirectX c'est le graphique, le son les périph d'entrée etc.. ? comment mapper un truc complet vers une api plus restreinte ?
Où alors il s'agit juste de D3D vers OpenGL, et parler de DirectX vers OpenGL est un abus de langage
0  0 
Avatar de nirgal76
Membre chevronné https://www.developpez.com
Le 17/03/2014 à 14:43
Oui c'est vrai, j'avais bien noté que le titre ne faisait pas la confusion mais les commentaires oui.

Celui-ci par exemple
d'avoir fait une implémentation de DirectX en OpenGL
. il aurait donc fallut dire "une implémentation de Direct3D en OpenGL"
0  0