Portage de defs, binds et sets
OpenGL n’a pas de tables de définitions stockées ; Vous ne pouvez pas définir des modèles d’éclairage, des matériaux, des textures, des styles de trait ou des motifs en tant qu’objets distincts comme vous le pouvez dans IRIS GL. Par conséquent, OpenGL n’a pas d’équivalents directs aux fonctions IRIS GL suivantes :
- Imdef et Imbind
- 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 def/bind IRIS GL. Par exemple, voici une définition matérielle 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 auquel fait référence 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 );