- Bezeichnung
-
gl.Map -- definiert einen ein- oder zweidimensionalen Evaluator
- Übersicht
-
gl.Map(target, u1, u2, pointsArray)
gl.Map(target, u1, u2, v1, v2, pointsArray)
- Beschreibung
-
Evaluatoren bieten eine Möglichkeit, polynome oder rationale polynome
Abbildungen zu verwenden, um Knoten, Normalen, Texturkoordinaten und
Farben zu erzeugen. Die von einem Evaluator erzeugten Werte werden in
weitere Stufen der GL-Verarbeitung geschickt, als ob sie mit
gl.Vertex(), gl.Normal(),
gl.TexCoord() und gl.Color()
Befehle präsentiert worden wären, mit der Ausnahme, dass die erzeugten
Werte nicht die aktuelle Normale, Texturkoordinaten oder Farben
aktualisieren.
Alle polynomialen oder rationalen Polynom-Splines beliebigen Grades (bis
zu dem von der GL-Implementierung unterstützten maximalen Grad) können mit
Hilfe von Evaluatoren beschrieben werden. Dazu gehören fast alle Splines,
die in der Computergrafik verwendet werden: B-Splines, Bézier-Kurve ,
Hermite-Splines und so weiter.
gl.Map()
wird verwendet, um die Basis zu definieren und festzulegen, welche Art
von Werten erzeugt werden. Einmal definiert, kann eine Karte durch Aufruf von
gl.Enable() und gl.Disable() mit dem
Kartennamen aktiviert und deaktiviert werden, einem der neun vordefinierten
Werte für das Ziel, die nachfolgend beschrieben werden.
gl.EvalCoord() wertet die eindimensionalen Karten aus,
die aktiviert sind. Wenn gl.EvalCoord() stellt einen
Wert u oder Werte u und v dar, die Bernstein-Funktionen werden mit u^ und v^
ausgewertet, wobei
| u^ = (u - u1) / (u2 - u1)
v^ = (v - v1) / (v2 - v1)
|
ist.
target
ist eine symbolische Konstante, die angibt, welche Art von
Kontrollpunkten in pointsArray
bereitgestellt werden und welche Ergebnisse
bei der Auswertung der Karte erzeugt werden. Im eindimensionalen Modus kann
es einen der folgenden neun vordefinierten Werte annehmen:
#GL_MAP1_VERTEX_3
-
Jeder Kontrollpunkt besteht aus drei Fließkommawerten, die x, y und z
darstellen. Interne gl.Vertex() Befehle werden
bei der Auswertung der Karte generiert.
#GL_MAP1_VERTEX_4
-
Jeder Kontrollpunkt besteht aus vier Gleitkommawerten, die x, y, z und w
darstellen. Interne gl.Vertex() Befehle werden bei
der Auswertung der Karte generiert.
#GL_MAP1_INDEX
-
Jeder Kontrollpunkt ist ein einzelner Gleitkommawert, der einen Farbindex
darstellt. Interne gl.Index() Befehle werden generiert,
wenn die Karte ausgewertet wird, aber der aktuelle Index wird nicht mit dem
Wert dieses gl.Index() Befehls aktualisiert.
#GL_MAP1_COLOR_4
-
Jeder Kontrollpunkt besteht aus vier Fließkommawerten, die Rot, Grün, Blau
und Alpha darstellen. Interne gl.Color() Befehle werden
generiert, wenn die Karte ausgewertet wird, aber die aktuelle Farbe wird
nicht mit dem Wert dieses gl.Color() Befehls aktualisiert.
#GL_MAP1_NORMAL
-
Jeder Kontrollpunkt besteht aus drei Gleitkommawerten, die die x-, y-
und z-Komponenten eines Normalen-Vektors darstellen. Interne
gl.Normal() Befehle werden generiert, wenn die Karte
ausgewertet wird, aber die aktuelle Normale wird nicht mit dem Wert
dieses gl.Normal() Befehls aktualisiert.
#GL_MAP1_TEXTURE_COORD_1
-
Jeder Kontrollpunkt ist ein einzelner Gleitkommawert, der die Texturkoordinate
s darstellt. Interne gl.TexCoord() Befehle werden
generiert, wenn die Karte ausgewertet wird, aber die aktuellen
Texturkoordinaten werden nicht mit dem Wert dieses
gl.TexCoord() Befehls aktualisiert.
#GL_MAP1_TEXTURE_COORD_2
-
Jeder Kontrollpunkt besteht aus zwei Gleitkommawerten, die die
Texturkoordinaten s und t darstellen. Interne gl.TexCoord()
Befehle werden generiert, wenn die Karte ausgewertet wird, aber die aktuellen
Texturkoordinaten werden nicht mit dem Wert dieses
gl.TexCoord() Befehls aktualisiert.
#GL_MAP1_TEXTURE_COORD_3
-
Jeder Kontrollpunkt besteht aus drei Fließkommawerten, die die
Texturkoordinaten s, t und r darstellen. Interne gl.TexCoord()
Befehle werden generiert, wenn die Karte ausgewertet wird, aber die aktuellen
Texturkoordinaten werden nicht mit dem Wert dieses
gl.TexCoord() Befehls aktualisiert.
#GL_MAP1_TEXTURE_COORD_4
-
Jeder Kontrollpunkt besteht aus vier Gleitkommawerten, die die
Texturkoordinaten s, t, r und q darstellen. Interne gl.TexCoord()
Befehle werden generiert, wenn die Karte ausgewertet wird, aber die aktuellen
Texturkoordinaten werden nicht mit dem Wert dieses
gl.TexCoord() Befehls aktualisiert.
Im zweidimensionalen Modus werden die folgenden vordefinierten Konstanten
unterstützt:
#GL_MAP2_VERTEX_3
-
Jeder Kontrollpunkt besteht aus drei Fließkommawerten, die x, y und z
darstellen. Interne gl.Vertex() Befehle werden
bei der Auswertung der Karte generiert.
#GL_MAP2_VERTEX_4
-
Jeder Kontrollpunkt besteht aus vier Gleitkommawerten, die x, y, z und w
darstellen. Interne gl.Vertex() Befehle werden bei
der Auswertung der Karte generiert.
#GL_MAP2_INDEX
-
Jeder Kontrollpunkt ist ein einzelner Gleitkommawert, der einen Farbindex
darstellt. Interne gl.Index() Befehle werden generiert,
wenn die Karte ausgewertet wird, aber der aktuelle Index wird nicht mit
dem Wert dieses gl.Index() Befehls aktualisiert.
#GL_MAP2_COLOR_4
-
Jeder Kontrollpunkt besteht aus vier Fließkommawerten, die Rot, Grün, Blau
und Alpha darstellen. Interne gl.Color() Befehle werden
generiert, wenn die Karte ausgewertet wird, aber die aktuelle Farbe wird
nicht mit dem Wert dieses gl.Color() Befehls aktualisiert.
#GL_MAP2_NORMAL
-
Jeder Kontrollpunkt besteht aus drei Gleitkommawerten, die die x-, y- und
z-Komponenten eines Normalen-Vektors darstellen. Interne
gl.Normal() Befehle werden generiert, wenn die Karte
ausgewertet wird, aber die aktuelle Normale wird nicht mit dem Wert dieses
gl.Normal() Befehls aktualisiert.
#GL_MAP2_TEXTURE_COORD_1
-
Jeder Kontrollpunkt ist ein einzelner Gleitkommawert, der die
Texturkoordinate s darstellt. Interne gl.TexCoord()
Befehle werden generiert, wenn die Karte ausgewertet wird, aber die aktuellen
Texturkoordinaten werden nicht mit dem Wert dieses
gl.TexCoord() Befehls aktualisiert.
#GL_MAP2_TEXTURE_COORD_2
-
Jeder Kontrollpunkt besteht aus zwei Gleitkommawerten, die die
Texturkoordinaten s und t darstellen. Interne gl.TexCoord()
Befehle werden generiert, wenn die Karte ausgewertet wird, aber die aktuellen
Texturkoordinaten werden nicht mit dem Wert dieses
gl.TexCoord() Befehls aktualisiert.
#GL_MAP2_TEXTURE_COORD_3
-
Jeder Kontrollpunkt besteht aus drei Fließkommawerten, die die
Texturkoordinaten s, t und r darstellen. Interne gl.TexCoord()
Befehle werden generiert, wenn die Karte ausgewertet wird, aber die aktuellen
Texturkoordinaten werden nicht mit dem Wert dieses
gl.TexCoord() Befehls aktualisiert.
#GL_MAP2_TEXTURE_COORD_4
-
Jeder Kontrollpunkt besteht aus vier Gleitkommawerten, die die
Texturkoordinaten s, t, r und q darstellen. Interne gl.TexCoord()
Befehle werden generiert, wenn die Karte ausgewertet wird, aber die aktuellen
Texturkoordinaten werden nicht mit dem Wert dieses
gl.TexCoord() Befehls aktualisiert.
Zunächst ist #GL_AUTO_NORMAL
aktiviert. Wenn #GL_AUTO_NORMAL
aktiviert ist,
werden Normalen-Vektoren erzeugt, wenn entweder #GL_MAP2_VERTEX_3
oder
#GL_MAP2_VERTEX_4
zum Erzeugen von Knoten verwendet wird.
Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.
- Eingaben
-
- target
- gibt die Art der Werte an, die vom Evaluator erzeugt werden (siehe oben)
- u1
- gibt eine lineare Zuordnung von u an, wie sie in gl.EvalCoord() dargestellt wird, zu u^, der Variablen, die durch die in diesem Befehl angegebenen Gleichungen bewertet wird
- u2
- gibt eine lineare Zuordnung von u an, wie sie in gl.EvalCoord() dargestellt wird, zu u^, der Variablen, die durch die in diesem Befehl angegebenen Gleichungen bewertet wird
- v1
- gibt eine lineare Zuordnung von v an, wie sie in gl.EvalCoord() dargestellt wird, zu v^, einer der beiden Variablen, die durch die in diesem Befehl angegebenen Gleichungen bewertet werden
- v2
- gibt eine lineare Zuordnung von v an, wie sie in gl.EvalCoord() dargestellt wird, zu v^, einer der beiden Variablen, die durch die in diesem Befehl angegebenen Gleichungen bewertet werden
- pointsArray
- gibt eine Tabelle mit einer Anzahl von Kontrollpunkten an (siehe oben)
- Fehler
-
#GL_INVALID_ENUM
wird erzeugt, wenn target
kein akzeptierter Wert ist.
#GL_INVALID_VALUE
wird erzeugt, wenn u1
gleich u2
ist, oder wenn v1
gleich v2
ist.
#GL_INVALID_OPERATION
wird erzeugt, wenn gl.Map()
zwischen
gl.Begin() und gl.End() ausgeführt wird.
- Verbundene get-operationen
-
gl.GetMap()
gl.Get() mit dem Argument #GL_MAX_EVAL_ORDER
gl.IsEnabled() mit dem Argument #GL_MAP1_VERTEX_3
gl.IsEnabled() mit dem Argument #GL_MAP1_VERTEX_4
gl.IsEnabled() mit dem Argument #GL_MAP1_INDEX
gl.IsEnabled() mit dem Argument #GL_MAP1_COLOR_4
gl.IsEnabled() mit dem Argument #GL_MAP1_NORMAL
gl.IsEnabled() mit dem Argument #GL_MAP1_TEXTURE_COORD_1
gl.IsEnabled() mit dem Argument #GL_MAP1_TEXTURE_COORD_2
gl.IsEnabled() mit dem Argument #GL_MAP1_TEXTURE_COORD_3
gl.IsEnabled() mit dem Argument #GL_MAP1_TEXTURE_COORD_4
gl.IsEnabled() mit dem Argument #GL_MAP2_VERTEX_3
gl.IsEnabled() mit dem Argument #GL_MAP2_VERTEX_4
gl.IsEnabled() mit dem Argument #GL_MAP2_INDEX
gl.IsEnabled() mit dem Argument #GL_MAP2_COLOR_4
gl.IsEnabled() mit dem Argument #GL_MAP2_NORMAL
gl.IsEnabled() mit dem Argument #GL_MAP2_TEXTURE_COORD_1
gl.IsEnabled() mit dem Argument #GL_MAP2_TEXTURE_COORD_2
gl.IsEnabled() mit dem Argument #GL_MAP2_TEXTURE_COORD_3
gl.IsEnabled() mit dem Argument #GL_MAP2_TEXTURE_COORD_4