Formation OpenGL

Chapitre 1 : Présentation générale

OpenGL est une interface de programmation graphique qui permet de visualiser une scène 2D ou 3D, fixe ou animée. Les objets de cette scène peuvent etre composés de points, de lignes, de polygones, de quadriques, de nurbs. Ils possèdent des attributs graphiques : paramètres de réflexion, couleur, texture. L'éclairage de la scène est réalisé par des lumières de différents types (spot, lumière à l'infini).

La bibliothèque OpenGL a été créée par Silicon Graphics et bénéficie dès 1992 sur ces machines de l'accélération matérielle. Une implémentation libre de droits d'OpenGL a été écrite par Brian Paul : Mesa. Son code source est accessible.

OpenGL est indépendante de la plate-forme matérielle, et du système d'exploitation. Du fait de son ouverture, de sa souplesse d'utilisation et de sa disponibilité sur des plate-formes variées, OpenGL est utilisée dans de nombreuses applications scientifiques, industrielles ou artistiques 3D et certaines applications 2D vectorielles. Cette bibliothèque est également populaire dans l'industrie du jeu vidéo où elle est en rivalité avec Direct3D (sous Microsoft Windows).

La spécification OpenGL a été sous la responsabilité d'un consortium appelé OpenGL Architecture Review Board (ARB), de 1992 à 2006. L'ARB se compose d'entreprises ayant un intérêt pour la création d'une API cohérente et largement disponible. Selon le site officiel d'OpenGL, 3Dlabs, Apple, ATI, Dell, Evans & Sutherland, Hewlett-Packard, IBM, Intel, Matrox, nVidia, SGI et Sun Microsystems font partie des membres votants (juin 2002). Microsoft, l'un des membres fondateurs, s'est retiré en mars 2003.

En 2006, l'ARB a transféré le contrôle de la spécification OpenGL au Khronos Group, qui s'occupait déjà de différentes spécifications OpenGL pour les systèmes embarqués et les consoles de jeux vidéo dont OpenGL ES.

En 2007, OpenGL 3.0 introduit de nouvelles caractéristiques, parmi lesquelles :

Enfin, OpenGL 3.1 introduit également de nouvelles caractéristiques. Citons :

En terme de compatibilité, la version 3.0 supporte toutes les versions antérieures, tandis que dans la version 3.1, les fonctions devenues obsolètes ne sont plus accessibles qu'à travers l'extension GL_ARB_compatibility.

Une version d'OpenGL nommée OpenGL ES a été conçue spécifiquement pour les applications embarquées (téléphones portables, agenda de poche...).

OpenGL est basé sur des Etats

C 'est le principe général d'OpenGL, en particulier lorsqu'on utilise le pipeline graphique fixe : On positionne un état interne, et sa valeur est ensuite utilisée comme valeur courante : les ordres de dessin suivants utiliseront cette valeur-ci. Si ce n'est pas clair pour vous, prenons un exemple : Pour dessiner un sommet rouge, on positionne d'abord l'état correspondant à la couleur courante à la valeur rouge, et ensuite on demande le dessin d'un sommet. Tous les sommets qui seront ensuite dessinés seront rouges, tant que l'on n'a pas modifié la couleur courante.

Et ce principe que nous avons illustré à partir de l'état "couleur" s'applique à tous les états, comme l'épaisseur des traits, la transformation courante, l'éclairage, etc.

De nombreux états correspondent à des modes, et sont activés ou désactivés à l'aide des commandes glEnable(...) et glDisable(...).
Pour interroger la valeur d'un état, on utilise par exemple la commande glGet*(...) sous une de ses variantes.
Il est également possible de sauvegarder un ensemble de variables d'états avec la commande glPushAttrib(...), et de le restaurer ensuite avec la commande glPopAttrib().

Pipe-Line de Rendu

Voici le pipeline complet :

pipeline

Intéressons-nous au devenir des données géométriques :
[Données]->[Evaluateurs]->[Opérations sur les sommets et assemblage de primitives]->[Discrétisation]->[Opérations sur les fragments]->[Image]

Compléments d'OpenGL

OpenGL ne gère pas les opérations de bas niveau. Pour celà, on utilise la programmation de shaders, ou la bibliothèque GLU : OpenGL ne gère pas non plus le fenêtrage, et les entrées/sorties avec le clavier ou la souris. Pour celà, on utilise une bibliothèque complémentaire :

OpenGL ne propose pas de commandes de haut niveau pour décrire la manière dont les objets 3D sont organisés dans la scène. On pourra faire appel à un gestionnaire de scène, comme Open inventor, ou Ogre 3D.

Les couleurs

Les couleurs sont définies en OpenGL de deux manières :

La couleur d'un objet est spécifiée par l'appel à glColor(...).

Syntaxe des commandes OpenGL

Les commandes OpenGL commencent par le préfixe gl, et la première lettre de chaque mot est en majuscules.
Le suffixe est composé d'un chiffre qui indique le nombre d'arguments, et d'une lettre qui indique le type des arguments.
De plus, certaines commandes peuvent se terminer par la lettre v, pour indiquer l'emploi d'un tableau en paramètre.


Les types de données

OpenGL permet de manipuler les types de données suivants :

Suffixe Type Nom OpenGL
b entier 8 bits GLbyte
s entier 16 bits GLshort
i entier 32 bits GLint, GLsizei
f virgule flottante 32 bits GLfloat, GLclampf
d virgule flottante 64 bits GLdouble, GLclampd
ub entier non signé 8 bits GLubyte, GLboolean
us entier non signé 16 bits GLushort
ui entier non signé 32 bits GLuint, GLenum, GLbitfield

Les primitives géométriques

Finalisation du rendu

Utilisation de GLUT

Elimination des surfaces cachées


17 décembre 2012