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

  1. Créez un objet de pavage.
  2. Définissez les rappels qui seront utilisés pour traiter les triangles générés par le du paveur.
  3. 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.