zion - glBegin
Nom
glBegin, glEnd - délimite une primitive ou un groupe de primitives similaires de vertex.
SpÉcification c
void f3glBegin( GLenum mode ) .nf .fi .EQ delim $$ .EN
ParamÈtres
f2mode Spécifie la ou les primitives qui vont être créées à partir des vertex présents entre %f3glBegin et le %f3glEnd correspondant. Dix constantes symboliques sont acceptées : %f3GL_POINTS, %f3GL_LINES, %f3GL_LINE_STRIP, %f3GL_LINE_LOOP, %f3GL_TRIANGLES, %f3GL_TRIANGLE_STRIP, %f3GL_TRIANGLE_FAN, %f3GL_QUADS, %f3GL_QUAD_STRIP, et %f3GL_POLYGON. |
SpÉcification c
void f3glEnd( void ) .nf .fi
Description
%f3glBegin et %f3glEnd délimite la primitive ou le groupe de primitives similaires. %f3glBegin 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 :
%f3GL_POINTS Traite chaque vertex comme un point unique. Le vertex $n$ définit le point $n$. $N$ points sont affichés. |
%f3GL_LINES Traite chaque paire de vertex comme un segment de ligne independant. Les vertex $2n^-^1$ et $2n$ définissent une ligne $n$. $N/2$ lignes sont affichées. |
%f3GL_LINE_STRIP 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$. $N^-^1$ lignes sont affichées. |
%f3GL_LINE_LOOP 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. |
%f3GL_TRIANGLES Traite chaque triplet de vertex comme un triangle indépendant. Les vertex $3n^-^2$, $3n^-^1$, et $3n$ définissent un triangle $n$. $N/3$ triangles sont affichés. .BP |
%f3GL_TRIANGLE_STRIP 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$. $N^-^2$ triangles sont affichés. |
%f3GL_TRIANGLE_FAN 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$. $N^-^2$ triangles sont affichés. |
%f3GL_QUADS Traite chaque groupe de quatre vertex comme un quadrilatère independant. Les vertex $4n^-^3$, $4n^-^2$, $4n^-^1$, et $4n$ définissent le quadrilatère $n$. $N/4$ quadrilatères sont affichés. |
%f3GL_QUAD_STRIP 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 $2n^-^1$, $2n$, $2n~+~2$, et $2n~+~1$ définissent le quadrilatère $n$. $N/2^-^1$ 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. |
%f3GL_POLYGON 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 %f3glBegin et %f3glEnd. Ces commandes sont %f3glVertex, %f3glColor, %f3glIndex, %f3glNormal, %f3glTexCoord, %f3glEvalCoord, %f3glEvalPoint, %f3glArrayElement, %f3glMaterial, et %f3glEdgeFlag. Il est également acceptable d'utiliser %f3glCallList ou %f3glCallLists 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 %f3glBegin et %f3glEnd, un flag d'erreur est mis et la commande est ignorée.
Si on ne regarde pas la valeur choisie pour f2mode, il n'y a pas de limite pour le nombre de vertex pouvant être définis entre %f3glBegin et %f3glEnd. 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 %f3GL_LINES (2), %f3GL_TRIANGLES (3), %f3GL_QUADS (4), et %f3GL_QUAD_STRIP (2).
Erreurs
%f3GL_INVALID_ENUM est générée si f2mode est mis à une valeur non acceptée.
%f3GL_INVALID_OPERATION est générée si %f3glBegin est exécuté entre un %f3glBegin et le %f3glEnd correspondant.
%f3GL_INVALID_OPERATION est générée si %f3glEnd est exécuté sans avoir été précédé par un %f3glBegin.
%f3GL_INVALID_OPERATION est générée si une commande autre que %f3glVertex, %f3glColor, %f3glIndex, %f3glNormal, %f3glTexCoord, %f3glEvalCoord, %f3glEvalPoint, %f3glArrayElement, %f3glMaterial, %f3glEdgeFlag, %f3glCallList, ou %f3glCallLists est exécutée entre l'exécution de %f3glBegin et le %f3glEnd correspondant.
L'exécution de %f3glEnableClientState, %f3glDisableClientState, %f3glEdgeFlagPointer, %f3glTexCoordPointer, %f3glColorPointer, %f3glIndexPointer, %f3glNormalPointer, %f3glVertexPointer, %f3glInterleavedArrays, ou %f3glPixelStore n'est pas autorisée entre un appel à %f3glBegin et l'appel correspondant à %f3glEnd, mais une erreur peut être ou non générée.
Voir aussi
%f3glArrayElement(3G), %f3glCallList(3G), %f3glCallLists(3G), %f3glColor(3G), %f3glEdgeFlag(3G), %f3glEvalCoord(3G), %f3glEvalPoint(3G), %f3glIndex(3G), %f3glMaterial(3G), %f3glNormal(3G), %f3glTexCoord(3G), %f3glVertex(3G)
Traduction
Sylvain Vignaud < sylvain@vignaud.org >, 2002
Poster un commentaire