Portage des ensembles de paramètres, des liaisons et des ensembles
OpenGL n’a pas de tables de définitions stockées ; vous ne pouvez pas définir des modèles d’éclairage, du matériel, des textures, des styles de ligne ou des modèles en tant qu’objets distincts, comme vous pouvez le faire dans IRIS GL. Ainsi, OpenGL n’a pas d’équivalent direct aux fonctions suivantes de la comptabilité IRIS :
- Imdef et lier
- tevdef et tevbind
- textdef et textbind
- definestyle et SetStyle
- defpattern et setPattern
Vous pouvez utiliser des listes d’affichage OpenGL pour imiter le mécanisme de définition/liaison de l’IRIS dans le GL. Par exemple, voici une définition de matériau dans IRIS GL :
float mat() = {
AMBIENT, .1, .1, .1,
DIFFUSE, 0, .369, .165,
SPECULAR, .5, .5, .5,
SHININESS, 10,
LMNULL
};
lmdef(DEFMATERIAL, 1, 0, mat);
lmbind(MATERIAL, 1);
L’exemple de code OpenGL suivant définit le même matériau dans une liste d’affichage référencée par le numéro de liste défini par MYMATERIAL.
#define MYMATERIAL 10
GLfloat mat_amb[] = {.1, .1, .1, 1.0};
GLfloat mat_dif[] = {0, .369, .165, 1.0};
GLfloat mat_spec[] = {.5, .5, .5, 1.0};
glNewList(MYMATERIAL, GL_COMPILE);
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_amb);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_dif);
glMaterialfv(GL_FRONT, GL_SHININESS, 10);
glEndList();
glCallList( MYMATERIAL );