Scroll to navigation

GLBEGIN(3G) GLBEGIN(3G)

NOM

glBegin, glEnd - délimite une primitive ou un groupe de primitives similaires de vertex.

SPÉCIFICATION C

void glBegin( GLenum mode )


PARAMÈTRES

Spécifie la ou les primitives qui vont être créées à partir des vertex présents entre glBegin et le glEnd correspondant. Dix constantes symboliques sont acceptées : GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP, et GL_POLYGON.

SPÉCIFICATION C

void glEnd( void )


DESCRIPTION

glBegin et glEnd délimite la primitive ou le groupe de primitives similaires. glBegin accepte un unique argument qui spécifie de quelle manière les vertex sont interprétés. En prenant n comme un compteur entier commançant à un, et N comme le nombre total de vertex spécifiés, les interprétations sont comme suit :

Traite chaque vertex comme un point unique. Le vertex n définit le point n . N points sont affichés.
Traite chaque paire de vertex comme un segment de ligne independant. Les vertex 2n1 et 2n définissent une ligne n . N/2 lignes sont affichées.
Affiche un groupe de segments de lignes connectés depuis le premier vertex jusqu'au dernier. Les vertexes n et n+1 définissent une lignes n . N1 lignes sont affichées.
Affiche un groupe fermé de segments de lignes connectés depuis le premier vertex jusqu'au dernier, puis jusqu'au premier de nouveau. Les vertexes n et n+1 définissent une ligne n . La dernière ligne, toutefois, est définie par les vertexes N et 1 . N lignes sont affichés.
Traite chaque triplet de vertex comme un triangle indépendant. Les vertex 3n2 , 3n1 , et 3n définissent un triangle n . N/3 triangles sont affichés.
Affiche un groupe de triangles connectés. Un triangle est défini pour chaque vertex présenté après les deux premiers vertex. Si n est impair, les vertex n , n+1 , et n+2 définissent le triangle n . Si n est pair, les vertex n+1 , n , et n+2 définissent le triangle n . N2 triangles sont affichés.
Affiche un groupe de triangles connectés. Un triangle est défini pour chaque vertex présenté après les deux premiers vertex. Les vertex 1 , n+1 , et n+2 définissent le triangle n . N2 triangles sont affichés.
Traite chaque groupe de quatre vertex comme un quadrilatère independant. Les vertex 4n3 , 4n2 , 4n1 , et 4n définissent le quadrilatère n . N/4 quadrilatères sont affichés.
Affiche un groupe de quadrilatères connectés. Un quadrilataire est défini pour chaque paire de vertex présentée après la première paire. Les vertexes 2n1 , 2n , 2n+2 , et 2n+1 définissent le quadrilatère n . N/21 quadrilataires sont affichés. Notez que l'ordre dans lequel les vertex sont utilisés pour construire un quadrilatère depuis les données stripées est different de celui utilisé avec des données indépendentes.
Affiche un unique polygone convexe. Les vertex 1 à N définissent ce polygone.

Seul un ensemble limité de commandes GL peuvent être utilisées entre glBegin et glEnd. Ces commandes sont glVertex, glColor, glIndex, glNormal, glTexCoord, glEvalCoord, glEvalPoint, glArrayElement, glMaterial, et glEdgeFlag. Il est également acceptable d'utiliser glCallList ou glCallLists pour exécuter des display lists qui incluent uniquement les commandes précédentes. Si n'importe quelle autre commande GL est exécutée entre glBegin et glEnd, un flag d'erreur est mis et la commande est ignorée.

Si on ne regarde pas la valeur choisie pour mode, il n'y a pas de limite pour le nombre de vertex pouvant être définis entre glBegin et glEnd. Lignes, triangles, quadrilatères, et polygones qui ne sont pas complètement spécifiés ne sont pas affichés. Des spécifications sont incomplètes si trop peu de vertex sont fournis pour spécifier même une seule primitive ou quand un nombre incorrect de vertex est spécifié. Une primitive incomplète est ignorée ; les autres sont affichées.

Le nombre minimum de spécification de vertexes pour chaque primitive est comme suit : 1 pour un point, 2 pour une ligne, 3 pour un triangle, 4 pour un quadrilatère, et 3 pour un polygone. Les modes qui demandent un certain nombre multiple (de la forme 2*n, 3*n,...) de vertex sont GL_LINES (2), GL_TRIANGLES (3), GL_QUADS (4), et GL_QUAD_STRIP (2).

ERREURS

GL_INVALID_ENUM est générée si mode est mis à une valeur non acceptée.

GL_INVALID_OPERATION est générée si glBegin est exécuté entre un glBegin et le glEnd correspondant.

GL_INVALID_OPERATION est générée si glEnd est exécuté sans avoir été précédé par un glBegin.

GL_INVALID_OPERATION est générée si une commande autre que glVertex, glColor, glIndex, glNormal, glTexCoord, glEvalCoord, glEvalPoint, glArrayElement, glMaterial, glEdgeFlag, glCallList, ou glCallLists est exécutée entre l'exécution de glBegin et le glEnd correspondant.

L'exécution de glEnableClientState, glDisableClientState, glEdgeFlagPointer, glTexCoordPointer, glColorPointer, glIndexPointer, glNormalPointer, glVertexPointer, glInterleavedArrays, ou glPixelStore n'est pas autorisée entre un appel à glBegin et l'appel
correspondant à glEnd, mais une erreur peut être ou non générée.

VOIR AUSSI

glArrayElement(3G), glCallList(3G), glCallLists(3G), glColor(3G), glEdgeFlag(3G), glEvalCoord(3G),
glEvalPoint(3G), glIndex(3G), glMaterial(3G), glNormal(3G), glTexCoord(3G), glVertex(3G)

TRADUCTION

Sylvain Vignaud <sylvain@vignaud.org>, 2002