Les extensions OpenGL
Les extensions OpenGL permettent d'ajouter des fonctions qui ne sont pas prévues à l'origine dans OpenGL.
Il existe de nombreuses extensions (environ 800 à ce jour) qui vont permettre d'accéder à des nouvelles fonctionnalités liées au hardware.
Constructions du nom des extensions
Les extensions commencent par GL_, GLX_ ou WGL_ (suivant la plateforme utilisée: GL pour toutes plateformes, GLX pour X Window, WGL pour Windows).
Vous pouvez trouver GLEW à la place au début des extensions. Dans ce cas, il s'agit d'une utilisation de la librairie GLEW (Linux, windows, apple).
Les fabriquants de cartes graphiques vont donc fournir des fonctionnalités spécifiques à leur carte.
Pour distinguer ces extensions par constructeurs, un préfixe sur la fonction est utilisé:
NV_ pour nvidia
IBM_ pour ibm
3DFX_ pour 3d fx
...
Exemple: GL_SGI_color_table
Mais lorsqu'une extension est commune à plusieurs constructeurs, celle-ci se nommera
EXT_
Exemple: GL_EXT_texture3D
Les extensions qui ont été revues par l'ARB sont préfixées ARB_ et sont des fonctions étendues qui peuvent prétendre à une intégration standard sous OpenGL.
Exemple: GL_ARB_clear_texture
Pour OpenGL ES, les extensions seront côdées GL_OES
Liste des extensions
Pour connaître la liste des extensions disponibles, il faudra utiliser
- la fonction glGetString.
- il est possible d'utiliser la librairie GLEW (Linux, windows, apple). Des exemples d'utilisation seront données ici.
Dans ce
cas, il faudra tester GLEW_ARB_...
Une description de ces différentes extensions pour openGL pourra être trouvée sur https://www.opengl.org/registry/ ou pour OpenGL ES sur https://www.khronos.org/registry/gles/
Exemple de fonction indiquant la présence d'une extension
Voici un exemple d'utilisation de glGetString dans une fonction nommée existExtension() pour déterminer la présence ou non d'une extension:
Il faudra qu'OpenGL
soit initialisé avant de faire appel à cette fonction.