Pourquoi devriez-vous utiliser OpenGL et non DirectX ?

Il y a quelques jours, sur le blog de Wolfire Games, est apparu un intéressant point de vue sur les raisons d’utiliser OpenGL. L’article étant fort intéressant, nous vous l’avons traduit, pour qu’il profite au plus grand nombre.



Souvent, lorsque nous rencontrons d’autres développeurs de jeux et disons que nous utilisons OpenGL pour notre jeu Overgrowth, nous sommes vus avec des regards d’incrédulité : pourquoi devrions-nous utiliser OpenGL ? DirectX c’est l’avenir. Lorsque nous disons aux représentants de cartes graphiques que nous utilisons OpenGL, la température de la pièce descend de dix degrés.

Cela nous déconcerte. C’est une habitude de geeks que les sites basés sur les standards, par exemple, rejettent Silverlight, Flash, ou ActiveX. Le développement multiplateforme est louable et intelligent. Aucun geek qui se respecte n’aime traiter avec les standards fermés des documents Word ou des serveurs Exchange. Dans quel genre de monde bizarre des ingénieurs vont non seulement vers la dernière API propriétaire de Microsoft, mais dénoncent activement son concurrent au standard ouvert ?

Avant de nous plonger dans le récit de pourquoi nous soutenons OpenGL, commençons par un peu d’histoire.

Qu’est-ce que OpenGL ?

En 1982, Silicon Graphics commença à vendre des terminaux graphiques haute performance utilisant une API propriétaire nommée Iris GL (GL est l’abréviation de « graphics library » (bibliothèque graphique)). Au fil des ans, Iris GL c’est alourdi et est devenu difficile à maintenir, jusqu’à ce que Silicon Graphics ait franchi une étape radicalement nouvelle : ils ont complètement remanié Iris GL et en ont fait un standard ouvert. Leurs concurrents pourraient utiliser la nouvelle bibliothèque graphique libre (OpenGL), mais en retour, ils devraient aider à la maintenir et la tenir à jour.

Aujourd’hui, OpenGL est géré par le groupe Khronos, une organisation à but non lucratif, avec des représentants de nombreuses entreprises qui sont intéressées pour maintenir une API graphique de haute qualité. À un niveau plus bas, il est géré par l’ARB (OpenGL Architecture Review Board). OpenGL est pris en charge sur de nombreuses plateformes de jeux, incluant Mac, Windows, Linux, PS3 (comme un wrapper GCM), Wii, iPhone, PSP, et DS. Chaque plate-forme de jeu, sauf pour la XBox, ce qui nous amène au sujet suivant :

Qu’est-ce que DirectX ?

Depuis MS-DOS, Microsoft a compris que les jeux jouaient un rôle important pour l’utilisateur dans le choix de son système d’exploitation. Pour cette raison, en 1995, ils ont créé un ensemble de bibliothèques propriétaire afin d’encourager des jeux exclusifs pour leur nouvel OS Windows 95. Ces bibliothèques incluaient Direct3D, DirectInput et DirectSound, et la collection complète fut connu sous le nom de DirectX. Lorsque Microsoft entra dans le marché du jeu vidéo en 2001, il introduisit la DirectX Box, ou XBox pour faire plus court. La XBox a été un produit d’appel (perdant plus de 4 milliards de dollars), destiné à préparer la voie pour dominer le marché des jeux dans la prochaine génération.

En regardant la scène du jeu maintenant, il est clair que cette stratégie a réussi. La plupart des principaux jeux pour PC utilisent désormais DirectX, et fonctionnent sur Windows et XBox 360. À quelques exceptions près, ils ne travaillent plus sur les plates-formes concurrentes, comme Playstation, Mac OS et la Wii. Ce sont des marchés importants de laisser de côté, nous amenant à la grande question :

Pourquoi tout le monde utilise DirectX ?

Tout le monde utilise DirectX car le choix de l’API dans le développement de jeu est une boucle de rétroaction positive, et il a basculé en faveur de DirectX en 2005.

C’est une boucle de rétroaction positive car à chaque fois qu’une API devient plus populaire, elle reste de plus en plus populaire en raison des effets de réseau. Les effets de réseau les plus importants sont les suivants : l’API la plus populaire obtient un meilleur soutien des fournisseurs de cartes graphiques, et les programmeurs sont plus susceptibles de déjà connaître comment l’utiliser.

L’utilisation de l’API a changé en faveur de DirectX lorsque Microsoft mena une double campagne autour du lancement de la Xbox 360 et Windows Vista, en y ajoutant la propagation de FUD (peur, incertitude et doute) à propos de l’avenir d’OpenGL, et en exagérant sur les mérites de DirectX. Depuis lors, les effets de réseau ont amplifié cette divergence, jusqu’à ce qu’OpenGL ait presque complètement disparu des plateformes de jeux traditionnelles.

1. Effets de réseau et cercles vicieux

Sur Windows, c’est un fait que les pilotes graphiques DirectX sont mieux maintenus que les pilotes graphiques OpenGL. Cela est causé par le cercle vicieux de l’aide du fournisseur. Comme les développeurs de jeux sont incités à passer d’OpenGL vers DirectX par d’autres facteurs, les fabricants de cartes graphiques (fournisseurs) reçoivent moins de rapports de bogue pour leurs pilotes OpenGL, extensions et documentation. Il en résulte des pilotes OpenGL moins fiables, conduisant encore plus de développeurs de jeux à basculer d’OpenGL vers DirectX. Le cycle se répète.

De même, il est reconnu que plus de programmeurs de jeux savent comment utiliser DirectX qu’OpenGL, donc c’est moins cher (moins de formation nécessaire) de réaliser un jeu utilisant DirectX plutôt qu’OpenGL. C’est le résultat d’un autre cercle vicieux : comme plus de projets de jeux utilisent DirectX, plus de programmeurs doivent apprendre à l’utiliser. Comme plus de programmeurs apprennent à l’utiliser, il devient moins cher pour les projets de jeu d’utiliser DirectX qu’OpenGL.

2. FUD à propos d’OpenGL et Vista

Microsoft débuta une campagne de FUD contre OpenGL avec l’arrivée de Windows Vista. En 2003, Microsoft quitte l’ARB (OpenGL Architecture Review Board), montrant ainsi qu’ils n’avaient plus aucun intérêt dans l’avenir d’OpenGL. Puis, en 2005, ils ont donné des présentations lors du SIGGRAPH (Special Interest Group for GRAPHics) et du WinHEC (Windows Hardware Engineering Conference) donnant l’impression que Windows Vista verrait retirer le support d’OpenGL, excepté pour maintenir une rétrocompatibilité avec les applications pour XP. Cette version d’OpenGL serait une couche au dessus de DirectX comme indiqué ici (depuis la présentation au HEC) provoquant une grave perte de performance. Cette campagne créa une panique dans la communauté OpenGL, entrainant un grand nombre de programmeurs professionnels à passer sur DirectX.

Lorsque Vista fut disponible, ils firent marche arrière sur leurs intentions pour OpenGL, autorisant les fabricants à créer des pilotes rapidement installables (ICDs) pour retrouver un support d’OpenGL natif. Le consortium d’OpenGL envoya des bulletins d’information prouvant qu’OpenGL est toujours une solution de premier choix, et que les performances d’OpenGL sur Vista étaient au moins aussi bonnes que Direct3D. Malheureusement pour l’OpenGL, les dégâts étaient déjà faits, la confiance du public en OpenGL a été gravement ébranlée.

3. Campagnes de marketing trompeuses

Les stratégies de lancement de Windows Vista et Windows 7 étaient toutes deux accompagnées d’une immense campagne marketing par Microsoft pour DirectX, dans laquelle ils ont montré des captures d’écran ’avant’ et ’après’ les différentes versions de DirectX. De nombreux joueurs pensent maintenant que passer de DirectX 9 à DirectX 10 va transformer, comme par magie, des graphismes stupidement sombre à la normale (comme dans la comparaison ci-dessus), ou Halo 1 en Crysis. Des journalistes de jeux prouvèrent qu’il n’y avait pas de différences entre Crysis DX9 et DX10, et que ces améliorations "DX10" fonctionnaient très bien avec DX9 en ajustant un fichier de configuration. Cependant, en dépit de son imprécision évidente, l’effet marketing a convaincu de nombreux joueurs que les mises à jour de DirectX sont le seul moyen d’accéder aux dernières fonctionnalités graphiques.

Alors que de nombreux jeux participèrent à la mascarade marketing de Microsoft, de nombreux programmeurs avisés comme John Carmack refusèrent d’être entraînés là-dedans. Il s’est exprimé de cette façon : « Personnellement, je ne changerais pas pour quelque chose comme DX10 maintenant. Je voudrais laisser les choses se décanter un peu et attendre qu’il y ait un besoin très fort pour cela. »

Alors, pourquoi devons-nous utiliser OpenGL ?

Etant donné qu’OpenGL a moins de soutien des fournisseurs, n’est plus utilisé dans les jeux, est activement attaqué par Microsoft, et n’a pas d’élan marketing, pourquoi devrions-nous encore l’utiliser ? Ne serait-il pas plus profitable de le mettre de côté et utiliser DirectX comme tout le monde ? Non, parce qu’en réalité, OpenGL est plus puissant que DirectX, supporte plus de plates-formes, et est essentiel pour l’avenir des jeux.

1. OpenGL est plus puissant que DirectX

Il est reconnu qu’OpenGL a des méthodes d’affichage plus rapides que DirectX (voir les présentations de NVIDIA comme celle-ci, si vous ne me croyez pas), OpenGL est toujours premier à avoir accès aux nouvelles fonctionnalités GPU via les extensions des fabricants. OpenGL vous donne un accès direct à toutes les nouvelles fonctionnalités graphiques sur toutes les plates-formes, tandis que DirectX ne propose que des instantanés occasionnels sur leurs plus récentes versions de Windows. La technologie de tesselation que Microsoft encourage fortement pour DirectX 11, est une extension d’OpenGL depuis trois ans. Et était déjà possible depuis des années, en utilisant l’instanciation rapide et les vertex-texture-fetch. Je ne sais pas quelles nouvelles technologies seront exposées dans les prochaines années, je sais juste qu’elles seront d’abord disponibles dans OpenGL.

Microsoft a travaillé dur sur DirectX 10 et 11, et ils sont maintenant presque aussi rapides qu’OpenGL, et supporte presque autant de fonctionnalités. Cependant, il ya un gros problème : ils ne fonctionnent pas sur Windows XP ! La moitié des joueurs sur PC utilisent encore XP, donc l’utilisation de DirectX 10 ou 11 n’est pas vraiment une option viable. Si vous vous souciez vraiment d’avoir des graphismes les meilleurs possible, et de les fournir à autant de joueurs que possible, il n’y a pas d’autre choix qu’OpenGL.

2. OpenGL est multiplateforme

Plus de la moitié de nos joueurs de Lugaru sont des utilisateurs de Mac ou Linux (comme indiqué dans ce message), et nous ne serions pas surpris s’il en était de même pour notre nouveau jeu Overgrowth. Lorsque nous parlons aux principaux développeurs de jeux, nous entendons que le support pour Mac et Linux est une perte de temps. Cependant, je n’ai jamais vu aucune preuve de ces déclarations. Blizzard a toujours fourni simultanément des versions pour Mac de leurs jeux, et ils sont l’une des sociétés ayant les jeux les plus populaires dans le monde ! S’ils font quelque chose différemment des autres, alors leur méthode est sans doute la bonne.

Comme John Carmack a dit lorsqu’on lui a demandé si Rage est un jeu DirectX, « Il est encore OpenGL, bien que nous utilisons évidemment une API D3D [sur la Xbox 360], et CG sur la PS3. Il est intéressant de voir à quel point la technologie se soucie peu de l’API que vous utilisez et de quelle génération de la technologie vous utilisez. Vous avez une petite poignée de fichiers qui se soucient de ce qu’ils sont sur l’API, et des millions de lignes de code qui sont agnostiques à la plate-forme ils évoluent. » Si vous pouvez toucher toutes les plateformes utilisant OpenGL, pourquoi se tirer dans le pied en s’appuyant sur DirectX ?

Même si vous ne vous souciez que de Windows, permettez-moi de vous rappeler que la moitié des utilisateurs de Windows utilisent encore Windows XP, et seront incapables de jouer votre jeu si vous utilisez les dernières versions de DirectX. La seule façon de fournir les derniers graphismes pour les joueurs sous Windows XP (la plus grande plate-forme de jeu de bureau) c’est par OpenGL.

3. OpenGL est meilleur pour l’avenir des jeux

OpenGL est un standard ouvert et non commercial créé pour permettre aux utilisateurs sur n’importe quelle plate-forme d’expérimenter des graphismes de la plus haute qualité que leur matériel peut donner. Son utilisation est écrasée par une attaque monopolistique d’une société géante et monolithique essayant de dominer une industrie qui est trop jeune pour se protéger. Comme Direct3D devient la seule API graphique pour le jeu prise en charge sur Windows, Microsoft gagne la mainmise sur le jeu sur PC.

Nous avons besoin de concurrence et de liberté pour faire baisser les prix et faire augmenter la qualité. Un monopole de Microsoft sur le jeu serait très mauvais aussi bien pour les joueurs et les développeurs de jeux.

OpenGL peut-il repasser en tête ?

Retour en 1997, la situation était similaire à la façon dont elle est maintenant. Microsoft conduit une campagne massive de marketing pour Direct3D, et bientôt tout le monde « savait » qu’il était plus rapide et meilleur qu’OpenGL. Cela a commencé à changer lorsque Chris Hecker a publié sa lettre ouverte dénonçant DirectX. Peu après, John Carmack donna son avis sur OpenGL, et en investissant son argent dans ce qu’il avait dit, en implémentant tous les jeux d’Id Software en OpenGL, prouvant une fois pour toutes que DirectX était inutile pour les jeux 3D haut de gamme.

Cette leçon semble avoir été oubliée au cours des dernières années. La plupart des développeurs de jeux sont tombés sous le charme du marketing de DirectX, ou dans le tourbillon des cercles vicieux et des effets de réseau. Il est temps de jeter le voile de publicités et des mots à la mode, et voir ce qui se passe réellement. Si vous utilisez DirectX, vous avez le choix entre utiliser le médiocre et lourd DirectX 9 ou sacrifier la majeure partie de votre base d’utilisateurs et utiliser DirectX 10 ou 11.

D’un autre coté, si vous utilisez OpenGL, vous obtenez plus rapidement plus de fonctionnalités graphiques puissantes que DirectX 11, et vous envisagerez toutes les versions de Windows, Mac et Linux, ainsi que la PS3, Wii, PSP, DS, et l’iPhone. Vous bénéficiez également du développement rapide du standard WebGL, lequel va devenir la base de la prochaine génération de jeux sur navigateur.

Si vous êtes un développeur de jeu, tout ce que je demande, c’est que vous fassiez des recherches et comparez les chiffres, et décidiez si OpenGL est un meilleur choix. Certains programmeurs préfèrent le style de l’API DirectX 11 à OpenGL, mais vous enfermerez ces APIs de bas niveau dans une couche d’abstraction de toute façon, cela ne devrait plus être un facteur décisif. S’il y a quelque chose dans OpenGL que vous n’aimez pas, alors demandez simplement à l’ARB pour le changer, ils sont là pour vous servir !

Si vous êtes un joueur qui utilise Windows XP, Mac, ou Linux, j’espère que vous voyez que DirectX existe uniquement dans le but d’empêcher de nouveaux jeux de sortir sur votre plate-forme, et la seule façon pour combattre ça est de soutenir les jeux utilisant OpenGL.

Cet article est une traduction d’un billet paru sur le blog de Wolfire Game. Merci à eux pour l’intérêt qu’ils portent aux standards ouverts et à notre plateforme.




Article sous GNU Free Documentation licence - Jeuxlinux.fr