glEvalCoord

Aus DGL Wiki
(Weitergeleitet von glEvalCoord2)
Wechseln zu: Navigation, Suche

glEvalCoord


Name

glEvalCoord1d, glEvalCoord1f, glEvalCoord2d, glEvalCoord2f, glEvalCoord1dv, glEvalCoord1fv, glEvalCoord2dv, glEvalCoord2fv - werten die aktivierten ein- und zweidimensionalen Karten (glMap1/glMap2) aus.


Delphi-Spezifikation

procedure glEvalCoord1d(u: TGLdouble); 
procedure glEvalCoord1f(u: TGLfloat);
procedure glEvalCoord2d(u: TGLdouble; v: TGLdouble); 
procedure glEvalCoord2f(u: TGLfloat; v: TGLfloat);

Parameter

u Legt den Wert für die Gebietskoordinate (engl.: domain coordinate) u fest, bezüglich der Basisfunktion die vorher mit glMap1 oder glMap2 gesetzt wurde.
v Legt den Wert für die Gebietskoordinate v fest, bezüglich der Basisfunktion die vorher mit glMap2 gesetzt wurde. Dieses Argument ist bei glEvalCoord1 nicht vorhanden.


Delphi-Spezifikation

procedure glEvalCoord1dv(const u: PGLdouble);  
procedure glEvalCoord1fv(const u: PGLfloat); 
procedure glEvalCoord2dv(const u: PGLdouble); 
procedure glEvalCoord2fv(const u: PGLfloat);

Parameter

u Bestimmt einen Zeiger auf ein Feld welches entweder eine oder zwei Gebietskoordinaten enthält. Dier erste Koordinate repräsentiert immer u. Die zweite Koordinate ist, falls vorhanden, v und wird nur bei den glEvalCoord2-Funktionen benötigt.


Beschreibung

Info DGL.png Die Orginalspezifikation spricht von "Maps" also Karten. In der folgenden Beschreibung wird dieser Begriff durch "Bezierkurven" ersetzt. 2D-Maps entsprechen somit einem Raster/Fläche aus Bezierkurven.

glEvalCoord1 wertet die aktivierte eindemensionale Bezierkurve an der Stelle u aus. glEvalCoord2 tut das selbe mit zweidimensionalen Bezierkurve unter Benutzung von zwei Gebietswerten, u und v.
Bezierkurven werden mittels glMap1 bzw. glMap2 erstellt und durch glEnable/glDisable aktiviert und deaktiviert.


Wenn eine der glEvalCoord Funktionen ausgeführt wird, werden alle momentan aktiven Bezierkurven, welche die entsprechende Dimension haben, ausgewertet. Anschließend ist es für jede ausgewertete Karte so, als ob der zugehörige GL-Befehl aufgerufen worden wäre. Dies bedeutet, dass

  • wenn GL_MAP1_INDEX oder GL_MAP2_INDEX aktiviert wurde, wird ein glIndex Befehl simuliert.
  • wenn GL_MAP1_COLOR oder GL_MAP2_COLOR aktiviert wurde, wird ein glColor Befehl simuliert.
  • wenn GL_MAP1_NORMAL oder GL_MAP2_NORMAL aktiviert wurde, wird ein Normalenvektor berechnet.
  • wenn eine der Texurfunktionen (GL_MAP1_TEXTURE_COORD_1, GL_MAP1_TEXTURE_COORD_2, GL_MAP1_TEXTURE_COORD_3, GL_MAP1_TEXTURE_COORD_4, GL_MAP2_TEXTURE_COORD_1, GL_MAP2_TEXTURE_COORD_2, GL_MAP2_TEXTURE_COORD_3, oder GL_MAP2_TEXTURE_COORD_4) aktiviert wurde, wird ein entsprechender glTexCoord Befehl simuliert.

Die Farbe, Farbindex, Normale und Texturkoordinaten, werden jedes mal errechnet wenn die Berechunung für diese Werte aktiviert wurde (ansonsten werden die aktuellen Werte benutzt). Diese berechneten Werte überschreiben allerdings nicht die aktuelle Farbe, Farbindex, Normale oder Texturkoordiante.
Das heißt, wenn glVertex Befehle mit glEvalCoord Befehlen durchsetzt sind, werden die Farbe, Normale und Texturkoordinaten die zu dem Vertex gehören nicht von den Werten beeinflußt, die durch die glEvalCoord Befehle erzeugt werden. Überschrieben werden diese Werte nur durch die dafür vorgesehen Befehle glColor, glIndex, glNormal und glTexCoord.

Es werden keine Simulationen für Bezierkurven durchgeführt die nicht aktiv sind. Wenn mehr als eine Texturauswertung für eine bestimmte Dimension (zum Beispiel GL_MAP2_TEXTURE_COORD_1 and GL_MAP2_TEXTURE_COORD_2) aktiviert wurde, dann wird nur die Auswertung der Bezierkurve ausgeführt, welche die größere Anzahl an Koordinaten produziert (In diesem Beispiel also GL_MAP2_TEXTURE_COORD_2). Ähnlich verhält es sich mit anderen Funktionen. Es gilt:

  • GL_MAP1_VERTEX_4 dominiert GL_MAP1_VERTEX_3
  • GL_MAP2_VERTEX_4 dominiert GL_MAP2_VERTEX_3

Wenn weder eine drei- noch eine vier-Komponenten Vertexmap für die entsprechende Dimension aktiviert ist, wird der glEvalCoord Befehl ignoriert.


Wenn die automatische Normalen-Generierung durch einen Aufruf von glEnable mit dem Token GL_AUTO_NORMAL aktiviert ist, erstellt glEvalCoord2 Oberflächennormalen analytisch, unabhängig vom Inhalt oder der Aktivierung der GL_MAP2_NORMAL Karte. Wenn

m = \frac{P_{p}}{P_{u}} \times \frac{P_{p}}{P_{v}}

Dann ist die generierte normale n gleich

n = \frac{-}{ \left \Vert m \right \| }

Wenn die automatische Normalengenerierung deaktiviert wurde, wird die zugehörige Normalenkarte GL_MAP2_NORMAL, falls aktiviert, genutzt um eine Normale herzustellen. Wenn weder die automatische Generierung noch die Normalenkarte aktiviert sind, generiert glEvalCoord2 keine Normalen.



Zugehörige Wertrückgaben

glIsEnabled mit Token GL_MAP1_VERTEX_3
glIsEnabled mit Token GL_MAP1_VERTEX_4
glIsEnabled mit Token GL_MAP1_INDEX
glIsEnabled mit Token GL_MAP1_COLOR_4
glIsEnabled mit Token GL_MAP1_NORMAL
glIsEnabled mit Token GL_MAP1_TEXTURE_COORD_1
glIsEnabled mit Token GL_MAP1_TEXTURE_COORD_2
glIsEnabled mit Token GL_MAP1_TEXTURE_COORD_3
glIsEnabled mit Token GL_MAP1_TEXTURE_COORD_4
glIsEnabled mit Token GL_MAP2_VERTEX_3
glIsEnabled mit Token GL_MAP2_VERTEX_4
glIsEnabled mit Token GL_MAP2_INDEX
glIsEnabled mit Token GL_MAP2_COLOR_4
glIsEnabled mit Token GL_MAP2_NORMAL
glIsEnabled mit Token GL_MAP2_TEXTURE_COORD_1
glIsEnabled mit Token GL_MAP2_TEXTURE_COORD_2
glIsEnabled mit Token GL_MAP2_TEXTURE_COORD_3
glIsEnabled mit Token GL_MAP2_TEXTURE_COORD_4
glIsEnabled mit Token GL_AUTO_NORMAL
glGetMap


Siehe auch

glBegin, glColor, glEnable, glEvalMesh, glEvalPoint, glIndex, glMap1, glMap2, glMapGrid, glNormal, glTexCoord, glVertex

Links