Programmer une application graphique est fortement simplifiĂ© si lâon passe par OpenGL, car alors, vous pouvez disposer dâun programme Ă mĂȘme de fonctionner sur des plate-formes trĂšs diverses, Ă dĂ©faut dâĂȘtre optimisĂ© pour chacune dâelles. Comment fonctionne OpenGL et comment peut-on exploiter ses potentiels ?
Si vous avez entendu parler dâOpenGL, vous avez probablement perçu que cette norme avait quelque chose Ă voir avec le graphique. Câest bien exact. Mais quâen est-il au ÂÂÂjuste ?
Une API graphique
OpenGL (Open Graphics Library) est une API dĂ©diĂ©e aux fonctions graphiques. En dâautres termes, il sâagit dâune sĂ©rie de fonctions graphiques prĂ©dĂ©finies et prĂ©-programmĂ©es et auxquelles un dĂ©veloppeur peut faire appel pour tracer des Ă©lĂ©ments sur un Ă©cran.
Dâautres APIs sont disponibles, comme Direct X pour Windows ou Metal pour iOS. Toutefois, ce qui fait la force de OpenGL, câest que les fonctions dĂ©finies par cette norme savent piloter le GPU de la plupart des cartes graphiques rĂ©centes, et donc par exemple, aussi bien sur les PC que sur les Mac. Pour mĂ©moire, les GPU (processeurs graphiques) sont habituellement beaucoup plus puissants que les CPU (microprocesseurs).
Quelle est la spécification de OpenGL ?
En rĂ©alitĂ©, OpenGL est particulier en ce sens que – et son nom Open Graphics Library est trompeur Ă cet Ă©gard – il ne sâagit pas dâune librairie comme en trouve pour Python. En rĂ©alitĂ©, OpenGL est une « spĂ©cification ». Quâest-ce Ă dire ?
Nous pourrions comparer une spĂ©cification Ă une recette informatique, en ce sens quâelle dĂ©crit ce quâun programme doit accomplir, mais ne fournit pas les instructions correspondantes.
Et oui⊠OpenGL ne contient pas de code. Il spécifie que certaines fonctions graphiques 2d et 3d doivent exister pour une carte graphique donnée, par exemple:
- dessiner un triangle,
- colorer le contenu dâun bloc,
- définir une source de lumiÚre,
- etc.
Chacune de ces fonctions est appelĂ©e Ă recevoir certains paramĂštres et produire un retour un certain rĂ©sultat, tel que le tracĂ© dâun triangle dans une fenĂȘtre.
Chaque constructeur gĂšre sa version de OpenGL
Câest le constructeur dâune carte graphique (Nvidia, AMD, IntelâŠ) qui gĂšre lâimplĂ©mentation des fonctions de OpenGL pour son propre matĂ©riel. Et il fournit Ă chaque fois le driver de la carte graphique, ce driver reprĂ©sentant lâinterface entre le programme Ă©crit par un dĂ©veloppeur et le GPU de la carte.
Multi-plateforme
Lâavantage de OpenGL câest quâun programme qui exploite cette spĂ©cification va donc fonctionner avec une multitude de cartes graphiques – la quasi totalitĂ© des cartes rĂ©centes. De fait, OpenGL est une spĂ©cification « cross-platform » (multiplateforme). Le mĂȘme jeu, la mĂȘme app, va pouvoir tourner sur Windows, iOS, Linux, Android.Â
Seul souci : comme chaque constructeur implĂ©mente son propre code OpenGL, il peut arriver quâun jeu nâait pas tout Ă fait le mĂȘme aspect et les mĂȘmes performances sur des matĂ©riels diffĂ©rents, par exemple la Xbox Series X et la Sony PS5.
Simple Ă aborder
La principale alternative multiplateforme de OpenGL est Vulkan. Cette spécification proposée par Khronos Group offre un contrÎle plus précis sur les cartes graphiques et ouvre donc la voie à une meilleure optimisation.
Pourtant, OpenGL est bien plus simple Ă aborder par un dĂ©veloppeur qui ferait ses dĂ©buts dans le jeu vidĂ©o ou la crĂ©ation dâapps. Qui plus est, de par son anciennetĂ© (1992), OpenGL est assez stable et prĂ©visible sur toutes sortes de plates-formes.
Bien Ă©videmment, un studio de dĂ©veloppement de jeux Ă grande Ă©chelle gagnera Ă programmer un jeu directement avec Direct X 12-Ultimate pour ce qui est de la version Windows, avec Metal pour le Mac et lâiPad, etc⊠Il rest que pour un petit studio, lâapproche OpenGL sera bien moins coĂ»teuse.
Deux versions de OpenGL
Deux versions de OpenGL sont disponibles:
- Legacy OpenGL
- Modern OpenGL (la version 3.3 et au-dessus)
Ce dernier donne accĂšs Ă des « shaders« , soit du code qui sâexĂ©cute directement sur le GPU et dĂ©finit comment les pixels individuels, mais aussi des attributs de polygones doivent ĂȘtre traitĂ©s et affichĂ©s.
Il est bon de débuter avec OpenGL
Ainsi donc, si vous dĂ©marrez dans la programmation dâapplications et vous demandez quel outil mettre Ă contribution, il est plus que conseillĂ© de recourir Ă OpenGL. Une fois que vous aurez acquis de la pratique, vous pourrez ĂȘtre tentĂ© dâutiliser Vulkan, Direct3D ou Metal. OpenGL est parfait pour sâinitier Ă la gestion dâinterfaces graphiques et reprĂ©sente donc un chemin idĂ©al pour les dĂ©butants.