glMap2f-Funktion
Die Funktionen glMap2d und glMap2f definieren einen zweidimensionalen Evaluator.
Syntax
void WINAPI glMap2f(
GLenum target,
GLfloat u1,
GLfloat u2,
GLint ustride,
GLint uorder,
GLfloat v1,
GLfloat v2,
GLint vstride,
GLint vorder,
const GLfloat *points
);
Parameter
-
Ziel
-
Die Art von Werten, die vom Evaluator generiert werden. Die folgenden symbolischen Konstanten werden akzeptiert.
Wert Bedeutung - GL_MAP2_VERTEX_3
Jeder Kontrollpunkt besteht aus drei Gleitkommawerten , die x, y und z darstellen. Interne glVertex3-Befehle werden generiert, wenn die Zuordnung ausgewertet wird. - GL_MAP2_VERTEX_4
Jeder Kontrollpunkt besteht aus vier Gleitkommawerten , die x, y, z und w darstellen. Interne glVertex4-Befehle werden generiert, wenn die Zuordnung ausgewertet wird. - GL_MAP2_INDEX
Jeder Kontrollpunkt ist ein einzelner Gleitkommawert, der einen Farbindex darstellt. Interne glIndex-Befehle werden generiert, wenn die Zuordnung ausgewertet wird. Der aktuelle Index wird jedoch nicht mit dem Wert dieser glIndex-Befehle aktualisiert. - GL_MAP2_COLOR_4
Jeder Kontrollpunkt besteht aus vier Gleitkommawerten, die Rot, Grün, Blau und Alpha darstellen. Interne glColor4-Befehle werden generiert, wenn die Zuordnung ausgewertet wird. Die aktuelle Farbe wird jedoch nicht mit dem Wert dieser glColor4-Befehle aktualisiert. - GL_MAP2_NORMAL
Jeder Kontrollpunkt besteht aus drei Gleitkommawerten, die die x-, y - und z-Komponenten eines normalen Vektors darstellen. Interne glNormal-Befehle werden generiert, wenn die Zuordnung ausgewertet wird. Die aktuelle Normalität wird jedoch nicht mit dem Wert dieser glNormal-Befehle aktualisiert. - GL_MAP2_TEXTURE_COORD_1
Jeder Kontrollpunkt ist ein einzelner Gleitkommawert, der die Texturkoordinate von s darstellt. Interne glTexCoord1-Befehle werden generiert, wenn die Zuordnung ausgewertet wird. Die aktuellen Texturkoordinaten werden jedoch nicht mit dem Wert dieser glTexCoord-Befehle aktualisiert. - GL_MAP2_TEXTURE_COORD_2
Jeder Kontrollpunkt besteht aus zwei Gleitkommawerten, die die Texturkoordinaten s und t darstellen. Interne glTexCoord2-Befehle werden generiert, wenn die Zuordnung ausgewertet wird. Die aktuellen Texturkoordinaten werden jedoch nicht mit dem Wert dieser glTexCoord-Befehle aktualisiert. - GL_MAP2_TEXTURE_COORD_3
Jeder Kontrollpunkt besteht aus drei Gleitkommawerten, die die Texturkoordinaten s, t und r darstellen. Interne glTexCoord3-Befehle werden generiert, wenn die Zuordnung ausgewertet wird. Die aktuellen Texturkoordinaten werden jedoch nicht mit dem Wert dieser glTexCoord-Befehle aktualisiert. - GL_MAP2_TEXTURE_COORD_4
Jeder Kontrollpunkt besteht aus vier Gleitkommawerten, die die Texturkoordinaten s, t, r und q darstellen. Interne glTexCoord4-Befehle werden generiert, wenn die Zuordnung ausgewertet wird. Die aktuellen Texturkoordinaten werden jedoch nicht mit dem Wert dieser glTexCoord-Befehle aktualisiert. -
u1
-
Eine lineare Zuordnung von u, wie für glEvalCoord2 dargestellt, zu u^, einer der beiden Variablen, die durch die von diesem Befehl angegebenen Formeln ausgewertet wird.
-
u2
-
Eine lineare Zuordnung von u, wie für glEvalCoord2 dargestellt, zu u^, einer der beiden Variablen, die durch die von diesem Befehl angegebenen Formeln ausgewertet wird.
-
ustride
-
Die Anzahl der Gleitkommazeichen oder verdoppelt sich zwischen dem Anfang des Kontrollpunkts Rij und dem Anfang des Kontrollpunkts R(i\ +1\ )\ j, wobei i und j die Kontrollpunktindizes u bzw. v sind. Dadurch können Kontrollpunkte in beliebige Datenstrukturen eingebettet werden. Die einzige Einschränkung besteht darin, dass die Werte für einen bestimmten Kontrollpunkt zusammenhängende Speicherspeicherorte belegen müssen.
-
uorder
-
Die Dimension des Steuerpunktarrays in der u-Achse. Muss positiv sein.
-
v1
-
Eine lineare Zuordnung von v, wie für glEvalCoord2 dargestellt, zu v^, einer der beiden Variablen, die durch die von diesem Befehl angegebenen Formeln ausgewertet wird.
-
v2
-
Eine lineare Zuordnung von v, wie für glEvalCoord2 dargestellt, zu v^, einer der beiden Variablen, die durch die von diesem Befehl angegebenen Formeln ausgewertet wird.
-
vstride
-
Die Anzahl der Gleitkommazeichen oder verdoppelt sich zwischen dem Anfang des Kontrollpunkts Rij und dem Anfang des Kontrollpunkts Ri(j\ +1\ ),, wobei i und j die u - bzw . v-Kontrollpunktindizes sind. Dadurch können Kontrollpunkte in beliebige Datenstrukturen eingebettet werden. Die einzige Einschränkung besteht darin, dass die Werte für einen bestimmten Kontrollpunkt zusammenhängende Speicherspeicherorte belegen müssen.
-
vorder
-
Die Dimension des Steuerpunktarrays auf der V-Achse. Muss positiv sein.
-
Punkte
-
Ein Zeiger auf das Array von Steuerpunkten.
Rückgabewert
Diese Funktion gibt keinen Wert zurück.
Fehlercodes
Die folgenden Fehlercodes können von der glGetError-Funktion abgerufen werden.
Name | Bedeutung |
---|---|
|
target war kein akzeptierter Wert. |
|
u1 war gleich u2 oder v1 gleich v2. |
|
Entweder ustride oder vstride war kleiner als die Anzahl der Werte in einem Kontrollpunkt. |
|
Entweder uorder oder vorder war kleiner als eins oder GL_MAX_EVAL_ORDER. |
|
Die Funktion wurde zwischen einem Aufruf von glBegin und dem entsprechenden Aufruf von glEnd aufgerufen. |
Bemerkungen
Evaluatoren bieten eine Möglichkeit, polynomiale oder rationale Polynomzuordnungen zu verwenden, um Scheitelpunkte, Normalwerte, Texturkoordinaten und Farben zu erzeugen. Die von einem Evaluator erzeugten Werte werden an weitere Phasen der OpenGL-Verarbeitung gesendet, so als ob sie mithilfe der Befehle glVertex, glNormal, glTexCoord und glColor dargestellt worden seien, mit der Ausnahme, dass die generierten Werte nicht die aktuelle Normal-, Texturkoordinaten oder Farbe aktualisieren.
Alle polynomalen oder rationalen polynomialen Splines eines beliebigen Grades (bis zum maximalen Grad, der von der OpenGL-Implementierung unterstützt wird) können mithilfe von Evaluatoren beschrieben werden. Dazu gehören fast alle Oberflächen, die in der Computergrafik verwendet werden, einschließlich B-Spline-Oberflächen, NURBS-Oberflächen, Bézier-Oberflächen usw.
Evaluatoren definieren Oberflächen basierend auf bivariaten Bernstein-Polynomen. Definieren Sie p (u^,v^) als
wobei Rij ein Kontrollpunkt ist, () ist das i. Bernstein-Polynom des Grads
n (uorder = n + 1)
und () ist das jth Bernstein-Polynom von Grad m (vorder = m + 1)
Erinnern Sie sich daran, dass
Die glMap2-Funktion wird verwendet, um die Basis zu definieren und anzugeben, welche Art von Werten erzeugt werden. Nach der Definition kann eine Karte aktiviert und deaktiviert werden, indem glEnable und glDisable mit dem Kartennamen aufgerufen werden, einem der neun vordefinierten Werte für das Ziel, wie oben beschrieben. Wenn glEvalCoord2 die Werte u und v darstellt, werden die bivariaten Bernstein-Polynome mit u^ und v^ ausgewertet, wobei
und
Der Zielparameter ist eine symbolische Konstante, die angibt, welche Art von Kontrollpunkten in Punkten bereitgestellt werden und welche Ausgabe generiert wird, wenn die Zuordnung ausgewertet wird.
Die Parameter ustride, uorder, vstride, vorder und points definieren die Arrayadressierung für den Zugriff auf die Kontrollpunkte. Der Punktparameter ist die Position des ersten Kontrollpunkts, der einen, zwei, drei oder vier zusammenhängende Speicherstandorte einnimmt, je nachdem, welche Karte definiert wird. Das Array enthält uorder x vorder-Kontrollpunkte . Der ustride-Parameter gibt an, wie viele gleitkomma- oder doppelte Speicherorte übersprungen werden, um den internen Speicherzeiger vom Kontrollpunkt Rij zum Kontrollpunkt R(\ i+1\ )j zu verschieben. Der vstride-Parameter gibt an, wie viele gleitkomma- oder doppelte Speicherorte übersprungen werden, um den internen Speicherzeiger vom Kontrollpunkt Rij zum Kontrollpunkt Ri(j\ +1\ ) zu verschieben.
Wie bei allen OpenGL-Befehlen, die Zeiger auf Daten akzeptieren, ist es so, als ob der Inhalt der Punkte vor der Rückgabe von glMap2 kopiert wurde. Änderungen am Inhalt von Punkten haben nach dem Aufruf von glMap2 keine Auswirkungen.
Die folgenden Funktionen rufen Informationen im Zusammenhang mit glMap2 ab:
glGet mit Argument GL_MAX_EVAL_ORDER
glIsEnabled mit Argument GL_MAP2_VERTEX_3
glIsEnabled mit Argument GL_MAP2_VERTEX_4
glIsEnabled mit Argument GL_MAP2_INDEX
glIsEnabled mit Argument GL_MAP2_COLOR_4
glIsEnabled mit Argument GL_MAP2_NORMAL
glIsEnabled mit Argument GL_MAP2_TEXTURE_COORD_1
glIsEnabled mit Argument GL_MAP2_TEXTURE_COORD_2
glIsEnabled mit Argument GL_MAP2_TEXTURE_COORD_3
glIsEnabled mit Argument GL_MAP2_TEXTURE_COORD_4
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) |
Windows 2000 Server [nur Desktop-Apps] |
Header |
|
Bibliothek |
|
DLL |
|