Freigeben über


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
GL_INVALID_ENUM
target war kein akzeptierter Wert.
GL_INVALID_VALUE
u1 war gleich u2 oder v1 gleich v2.
GL_INVALID_VALUE
Entweder ustride oder vstride war kleiner als die Anzahl der Werte in einem Kontrollpunkt.
GL_INVALID_VALUE
Entweder uorder oder vorder war kleiner als eins oder GL_MAX_EVAL_ORDER.
GL_INVALID_OPERATION
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

Gleichung mit der Definition von p ().

wobei Rij ein Kontrollpunkt ist, () ist das i. Bernstein-Polynom des Grads

n (uorder = n + 1)

Gleichung mit dem Bernsteinpolynom grad n.

und () ist das jth Bernstein-Polynom von Grad m (vorder = m + 1)

Gleichung, die das Bernstein-Polynom von Grad m zeigt.

Erinnern Sie sich daran, dass

Gleichungen, die die Äquivalenz zu 1 zeigen.

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

Gleichung mit der Definition von

und

Gleichung mit der Definition von v^.

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

glGetMap

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
Gl.h
Bibliothek
Opengl32.lib
DLL
Opengl32.dll

Siehe auch

glBegin

glColor

glEnable

glEnd

glEvalCoord

glEvalMesh

glEvalPoint

glMap1

glMapGrid

glNormal

glTexCoord

glVertex