Portage de polygones et de quadrilatères
Gardez les points suivants à l’esprit lors du Portage de polygones et de quadrilatères :
- Il n’existe aucun équivalent direct pour concave(true). Au lieu de cela, vous pouvez utiliser les routines de pavage dans le GLU, décrites dans polygones le pavage.
- Les modes de polygone sont définis différemment.
- Ces fonctions de dessin Polygon n’ont pas d’équivalent direct dans OpenGL : la famille de routines ; famille de routines POLF ; PMV, PDR et PCLOS; rpmv et rpdr; SPLF; et comfermeture.
Si votre code IRIS GL utilise ces fonctions, vous devrez réécrire le code à l’aide de glBegin( _ polygone GL).
Le tableau suivant répertorie les fonctions de dessin de polygones du GL IRIS et leurs fonctions OpenGL équivalentes.
| Fonction IRIS GL | Fonction OpenGL | Signification |
|---|---|---|
| bgnpolygonendpolygon | glBegin ( _ polygone GL)glEnd | Les vertex définissent la limite d’un polygone convexe simple. |
| glBegin(GL _ quads)glEnd |
Interprète les quadruples des sommets comme des quadrilatères. | |
| bgnqstripendqstrip | glBegin (GL _ Quad _ Strip)glEnd |
Interprète les vertex comme des bandes liées de quadrilatères. |
| glEdgeFlag | ||
| en mode | glPolygonMode | Définit le mode dessin de polygone. |
| rectrectf |
glRect | Dessine un rectangle. |
| sboxsboxf |
Dessine un rectangle aligné à l’écran. |
??
Portage des modes polygone
La fonction OpenGL glPolygonMode vous permet de spécifier le côté d’un polygone (l’arrière ou l’avant) auquel le mode s’applique. Sa syntaxe est la suivante :
void glPolygonMode( GLenum face, GLenum mode );
où visage est l’un des éléments suivants :
| Valeur GLenum | Signification |
|---|---|
| GL _ frontal | mode qui s’applique aux polygones frontaux |
| Back. du GL _ | mode qui s’applique aux polygones de l’arrière-plan |
| _recto _ et _ Back GL | mode qui s’applique aux polygones avant et arrière |
Le _ mode recto _ et _ verso GL est équivalent à la fonction Iris GL polymode . Le tableau suivant répertorie les modes de polygone du GL d’IRIS et leurs modes OpenGL équivalents.
| Mode de l’IRIS du GL | Mode OpenGL | Signification |
|---|---|---|
| _point Pym | _point GL | Dessine des vertex en tant que points. |
| _ligne Pym | _ligne GL | Dessine des arêtes limites sous forme de segments de ligne. |
| PYM _ remplissage | remplissage du GL _ | Dessine l’intérieur du polygone rempli. |
| PYM _ creux | Remplit uniquement les pixels intérieurs aux limites. |
Portage du polygone stipples
Lorsque vous portagez IRIS GL Polygon stipples, gardez les points suivants à l’esprit :
- OpenGL n’utilise pas de tables pour Polygon stipples ; un seul modèle stipple est conservé. Vous pouvez utiliser des listes d’affichage pour stocker différents modèles stipple.
- La taille de l’image bitmap OpenGL Polygon stipple est toujours un modèle 32 x 32.
- L’encodage stipple est affecté par glPixelStore.
Pour plus d’informations sur le portage des stipples Polygon, consultez Portage d’opérations de pixels.
Le tableau suivant répertorie les fonctions stipple et les fonctions OpenGL équivalentes de l’IRIS GL.
| Fonction IRIS GL | Fonction OpenGL | Signification |
|---|---|---|
| defpattern | glPolygonStipple | Définit le modèle stipple. |
| setpattern | OpenGL conserve un seul modèle Polygon stipple. | |
| GetPattern | glGetPolygonStipple | Retourne la bitmap stipple (utilisée pour retourner un index). |
Dans OpenGL, vous activez et désactivez Polygon stippling en transmettant GL _ Polygon _ STIPPLE en tant que paramètre pour glEnable et glDisable.
L’exemple de code OpenGL suivant illustre stippling Polygon :
void display(void)
{
GLubyte fly[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x80, 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60,
0x04, 0x60, 0x06, 0x20, 0x04, 0x30, 0x0C, 0x20,
0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20,
0x04, 0x06, 0x60, 0x20, 0x44, 0x03, 0xC0, 0x22,
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
0x66, 0x01, 0x80, 0x66, 0x33, 0x01, 0x80, 0xCC,
0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30,
0x07, 0xe1, 0x87, 0xe0, 0x03, 0x3f, 0xfc, 0xc0,
0x03, 0x31, 0x8c, 0xc0, 0x03, 0x33, 0xcc, 0xc0,
0x06, 0x64, 0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30,
0x18, 0xcc, 0x33, 0x18, 0x10, 0xc4, 0x23, 0x08,
0x10, 0x63, 0xC6, 0x08, 0x10, 0x30, 0x0c, 0x08,
0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08
};
GLubyte halftone[] = {
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55
};
glClear (GL_COLOR_BUFFER_BIT);
/* draw all polygons in white*/
glColor3f (1.0, 1.0, 1.0);
/* draw one solid, unstippled rectangle,*/
/* then two stippled rectangles*/
glRectf (25.0, 25.0, 125.0, 125.0);
glEnable (GL_POLYGON_STIPPLE);
glPolygonStipple (fly);
glRectf (125.0, 25.0, 225.0, 125.0);
glPolygonStipple (halftone);
glRectf (225.0, 25.0, 325.0, 125.0);
glDisable (GL_POLYGON_STIPPLE);
glFlush ();
}
Portage de polygones fractionnés
Dans IRIS GL, vous utilisez concave(true), puis bgnpolygon pour dessiner des polygones concave. Le GLU OpenGL comprend des fonctions que vous pouvez utiliser pour dessiner des polygones concave.
Pour dessiner un polygone concave avec OpenGL
- Créez un objet de pavage.
- Définissez les rappels qui seront utilisés pour traiter les triangles générés par le du paveur.
- Spécifiez le polygone concave à fractionnér.
Le tableau suivant répertorie les fonctions OpenGL permettant de dessiner des polygones fractionnés.
| Fonction OpenGL GLU | Signification |
|---|---|
| gluNewTess | Crée un objet de pavage. |
| gluDeleteTess | Supprime un objet de pavage. |
| gluTessCallback | |
| gluBeginPolygon | Commence la spécification du polygone. |
| gluTessVertex | Spécifie un sommet de polygone dans un contour. |
| gluNextContour | Indique que la série de vertex suivante décrit un nouveau contour. |
| gluEndPolygon | Met fin à la spécification Polygon. |