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.