OpenGL

Open GL (Open Graphics Library) est un sous ensemble de Iris GL, développé par Silicon Graphics Inc. vers la fin des années 80 pour le rendu graphique sur les stations de travail tournants sur des sous système d’exploitation IRIX (eux même sous-système d’UNIX).

Il intègre initialement des concepts propres à UNIX et Xwindow (architecture client-serveur, sockets).

Initialement conçu pour afficher des objets en 3D colorés dans des logiciels de CAO. Prendra un tournant vers le jeu vidéo dans les années 2000, et le calcul parallèle dans les années 2020.

Il est en concurrence avec Direct3D de Microsoft (Direct X), ou encore des API graphiques propriétaires de Sony et Nintendo spécialisées pour leur machines, et Metal sur les machines Apple.

Jusqu’à la version 10.14 de macOS (2018) était la norme sur Macinstosh, après quoi l’interface Metal la remplace. Metal permet d’accéder à toute la puissance des GPU Silicon d’Apple et à ses puces de Machine Learning .

Sur Windows, les fabricants de carte graphique collaborent avec Microsoft pour que DirectX puisse accéder aux dernières évolutions matérielles. DirectX est donc recommandé si l’on souhaite fabriquer des jeux vidéo à la pointe de la technologie.

Sur les autres systèmes UNIX (Linux) elle est toujours la norme.

Contrairement a Vulkan, Metal et aux API specifiques à certaines machines, OpenGL est une API de haut niveau qui décrit des formes géométriques et des transformations s’appliquant dessus. Pour gagner en performance elle tend à intégrer des notions de bas niveau et à augmenter sa complexité au fur et à mesure qu’elle évolue. OpenGL ne permet pas de manipuler directement le GPU par exemple comme le ferait Mantle, Vulkan ou Metal.

Là où dessiner une simple forme géométrique à l’écran ne prenait qu’une dizaine de lignes de codes en OpenGL 1, il en faut presque une centaine voir plusieurs centaines dans les versions “performantes” et récentes d’OpenGL.

Historique

La version 1.0 (1992) fonctionne en mode immédiat et orienté pour les logiciels de CAO.

La version 1.1 (1997) apporte un systeme avancé de gestion de textures, tournant vers le jeu vidéo.

La version 1.5 (2003) apporte les VBO et le mode retenu (retained mode).

La version 2.0 (2004) apporte les shaders avec le langage GLSL et le mode programmable.

La version 3.0 (2008) apporte un mécanisme de déprécation et de retrait d’anciennes fonctionnalités d’OpenGL.

La version 4.0 (2010) essaye d’être à la parité de fonctionnalité avec Direct3D (DirectX)

Vulkan (2016), OpenGL 5 ? Enlève tous les idiomes ancestraux d’OpenGL et repart sur une nouvelle base inspirée de Mantle. Les nouvelles fonctionnalités des cartes graphiques sont rendues accessible en priorité dans Vulkan.

Cours tiers

OpenGL 1.0

OpenGL 3.3 >

Normes

Utile

fonctions de l’api selon versions http://web.eecs.umich.edu/~sugih/courses/eecs487/common/notes/APITables.xml 🌍⤴