Partager via


fonction glMap2d

Les fonctions glMap2d et glMap2f définissent un évaluateur à deux dimensions.

Syntaxe

void WINAPI glMap2d(
         GLenum   target,
         GLdouble u1,
         GLdouble u2,
         GLint    ustride,
         GLint    uorder,
         GLdouble v1,
         GLdouble v2,
         GLint    vstride,
         GLint    vorder,
   const GLdouble *points
);

Paramètres

cible

Type de valeurs générées par l’évaluateur. Les constantes symboliques suivantes sont acceptées.

Valeur Signification
GL_MAP2_VERTEX_3
Chaque point de contrôle est trois valeurs à virgule flottante représentant x, y et z. Les commandes glVertex3 internes sont générées lorsque la carte est évaluée.
GL_MAP2_VERTEX_4
Chaque point de contrôle est quatre valeurs à virgule flottante représentant x, y, z et w. Les commandes glVertex4 internes sont générées lors de l’évaluation de la carte.
GL_MAP2_INDEX
Chaque point de contrôle est une seule valeur à virgule flottante représentant un index de couleur. Les commandes glIndex internes sont générées lorsque la carte est évaluée. Toutefois, l’index actuel n’est pas mis à jour avec la valeur de ces commandes glIndex .
GL_MAP2_COLOR_4
Chaque point de contrôle est quatre valeurs à virgule flottante représentant le rouge, le vert, le bleu et l’alpha. Les commandes glColor4 internes sont générées lorsque la carte est évaluée. Toutefois, la couleur actuelle n’est pas mise à jour avec la valeur de ces commandes glColor4 .
GL_MAP2_NORMAL
Chaque point de contrôle est trois valeurs à virgule flottante représentant les composants x, y et z d’un vecteur normal. Les commandes glNormal internes sont générées lorsque la carte est évaluée. Toutefois, la norme actuelle n’est pas mise à jour avec la valeur de ces commandes glNormal .
GL_MAP2_TEXTURE_COORD_1
Chaque point de contrôle est une seule valeur à virgule flottante représentant la coordonnée de texture s . Les commandes glTexCoord1 internes sont générées lorsque la carte est évaluée. Toutefois, les coordonnées de texture actuelles ne sont pas mises à jour avec la valeur de ces commandes glTexCoord .
GL_MAP2_TEXTURE_COORD_2
Chaque point de contrôle est deux valeurs à virgule flottante représentant les coordonnées de texture s et t . Les commandes glTexCoord2 internes sont générées lorsque la carte est évaluée. Toutefois, les coordonnées de texture actuelles ne sont pas mises à jour avec la valeur de ces commandes glTexCoord .
GL_MAP2_TEXTURE_COORD_3
Chaque point de contrôle est trois valeurs à virgule flottante représentant les coordonnées de texture s, t et r . Les commandes glTexCoord3 internes sont générées lorsque la carte est évaluée. Toutefois, les coordonnées de texture actuelles ne sont pas mises à jour avec la valeur de ces commandes glTexCoord .
GL_MAP2_TEXTURE_COORD_4
Chaque point de contrôle est quatre valeurs à virgule flottante représentant les coordonnées de texture s, t, r et q . Les commandes glTexCoord4 internes sont générées lorsque la carte est évaluée. Toutefois, les coordonnées de texture actuelles ne sont pas mises à jour avec la valeur de ces commandes glTexCoord .

u1

Mappage linéaire de u, tel que présenté à glEvalCoord2, à u^, l’une des deux variables évaluées par les équations spécifiées par cette commande.

u2

Mappage linéaire de u, tel que présenté à glEvalCoord2, à u^, l’une des deux variables évaluées par les équations spécifiées par cette commande.

ustride

Nombre de floats ou de doubles entre le début du point de contrôle Rij et le début du point de contrôle R(i\ +1\ )\ j, où i et j sont respectivement les index u et v du point de contrôle. Cela permet aux points de contrôle d’être incorporés dans des structures de données arbitraires. La seule contrainte est que les valeurs d’un point de contrôle particulier doivent occuper des emplacements de mémoire contigus.

uorder

Dimension du tableau de points de contrôle dans l’axe U. Doit être positif.

v1

Mappage linéaire de v, tel que présenté à glEvalCoord2, à v^, l’une des deux variables évaluées par les équations spécifiées par cette commande.

v2

Mappage linéaire de v, tel que présenté à glEvalCoord2, à v^, l’une des deux variables évaluées par les équations spécifiées par cette commande.

vstride

Nombre de floats ou de doubles entre le début du point de contrôle Rij et le début du point de contrôle Ri(j\ +1\ ), où i et j sont respectivement les index u et v du point de contrôle. Cela permet aux points de contrôle d’être incorporés dans des structures de données arbitraires. La seule contrainte est que les valeurs d’un point de contrôle particulier doivent occuper des emplacements de mémoire contigus.

vorder

Dimension du tableau de points de contrôle dans l’axe V. Doit être positif.

Points

Pointeur vers le tableau de points de contrôle.

Valeur renvoyée

Cette fonction ne retourne pas de valeur.

Codes d’erreur

Les codes d’erreur suivants peuvent être récupérés par la fonction glGetError .

Nom Signification
GL_INVALID_ENUM
target n’était pas une valeur acceptée.
GL_INVALID_VALUE
u1 était égal à u2, ou v1 était égal à v2.
GL_INVALID_VALUE
Ustride ou vstride était inférieur au nombre de valeurs dans un point de contrôle.
GL_INVALID_VALUE
Uorder ou vorder était inférieur à un ou GL_MAX_EVAL_ORDER.
GL_INVALID_OPERATION
La fonction a été appelée entre un appel à glBegin et l’appel à glEnd correspondant.

Notes

Les évaluateurs fournissent un moyen d’utiliser le mappage polynomial ou polynomial rationnel pour produire des sommets, des normales, des coordonnées de texture et des couleurs. Les valeurs produites par un évaluateur sont envoyées à d’autres étapes du traitement OpenGL comme si elles avaient été présentées à l’aide des commandes glVertex, glNormal, glTexCoord et glColor , sauf que les valeurs générées ne mettent pas à jour la normale, les coordonnées de texture ou la couleur actuelles.

Toutes les splines polynomiales ou polynomiales rationnelles de n’importe quel degré (jusqu’au degré maximal pris en charge par l’implémentation OpenGL) peuvent être décrites à l’aide d’évaluateurs. Il s’agit de presque toutes les surfaces utilisées dans l’infographie, y compris les surfaces B-spline, les surfaces NURBS, les surfaces béziers, etc.

Les évaluateurs définissent des surfaces basées sur des polynômes Bernstein bivariés. Définir p (u^,v^) comme

Équation montrant la définition de p ().

Rij est un point de contrôle, () est le ièmepolynomial de Bernstein de degré

n (uorder = n + 1)

Équation montrant le polynôme de Bernstein de degré n.

et () est le jth Bernstein polynomial de degré m (vorder = m + 1)

Équation montrant le polynôme de Bernstein de degré m.

Rappelez-vous que

Équations montrant l’équivalence à 1.

La fonction glMap2 est utilisée pour définir la base et spécifier le type de valeurs produites. Une fois définie, une carte peut être activée et désactivée en appelant glEnable et glDisable avec le nom de la carte, l’une des neuf valeurs prédéfinies pour la cible, décrites ci-dessus. Lorsque glEvalCoord2 présente des valeurs u et v, les polynômes bernstein bivariés sont évalués à l’aide de u^ et v^, où

Équation montrant la définition de vous^.

et

Équation montrant la définition de v^.

Le paramètre cible est une constante symbolique qui indique le type de points de contrôle fournis en points et la sortie générée lors de l’évaluation de la carte.

Les paramètres ustride, uorder, vstride, vorder et points définissent l’adressage de tableau pour accéder aux points de contrôle. Le paramètre points est l’emplacement du premier point de contrôle, qui occupe un, deux, trois ou quatre emplacements de mémoire contigus, en fonction de la carte définie. Il existe des points de contrôle uorder x vorder dans le tableau. Le paramètre ustride indique le nombre d’emplacements float ou doubles ignorés pour faire avancer le pointeur de mémoire interne du point de contrôle Rij au point de contrôle R(\ i+1\ )j. Le paramètre vstride indique le nombre d’emplacements float ou doubles ignorés pour faire avancer le pointeur de mémoire interne du point de contrôle Rij au point de contrôle Ri(j\ +1\ ).

Comme c’est le cas avec toutes les commandes OpenGL qui acceptent des pointeurs vers des données, c’est comme si le contenu des points avait été copié par glMap2 avant qu’il ne soit retourné. Les modifications apportées au contenu des points n’ont aucun effet après l’appel de glMap2 .

Les fonctions suivantes récupèrent des informations relatives à glMap2 :

glGet avec argument GL_MAX_EVAL_ORDER

glGetMap

glIsEnabled avec argument GL_MAP2_VERTEX_3

glIsEnabled avec argument GL_MAP2_VERTEX_4

glIsEnabled avec argument GL_MAP2_INDEX

glIsEnabled avec argument GL_MAP2_COLOR_4

glIsEnabled avec argument GL_MAP2_NORMAL

glIsEnabled avec argument GL_MAP2_TEXTURE_COORD_1

glIsEnabled avec argument GL_MAP2_TEXTURE_COORD_2

glIsEnabled avec argument GL_MAP2_TEXTURE_COORD_3

glIsEnabled avec argument GL_MAP2_TEXTURE_COORD_4

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge
Windows 2000 Server [applications de bureau uniquement]
En-tête
Gl.h
Bibliothèque
Opengl32.lib
DLL
Opengl32.dll

Voir aussi

glBegin

glColor

glEnable

glEnd

glEvalCoord

glEvalMesh

glEvalPoint

glMap1

glMapGrid

glNormal

glTexCoord

glVertex