glEvalCoord: Unterschied zwischen den Versionen
Flo (Diskussion | Beiträge) (Links -> DGL Tutorial: Anseits eckiger Welten) |
K (Kategorisierung) |
||
(17 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | |||
= glEvalCoord = | = glEvalCoord = | ||
Zeile 37: | Zeile 36: | ||
<br> | <br> | ||
== Beschreibung == | == Beschreibung == | ||
− | + | {{Hinweis|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''.<br> | ||
+ | ''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 | + | |
+ | 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_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_COLOR oder GL_MAP2_COLOR aktiviert wurde, wird ein [[glColor]] Befehl simuliert. | ||
Zeile 47: | Zeile 48: | ||
* 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. | * 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 | + | 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.<br /> |
+ | 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: | |
− | Es werden keine Simulationen für | ||
*GL_MAP1_VERTEX_4 dominiert GL_MAP1_VERTEX_3 | *GL_MAP1_VERTEX_4 dominiert GL_MAP1_VERTEX_3 | ||
*GL_MAP2_VERTEX_4 dominiert GL_MAP2_VERTEX_3 | *GL_MAP2_VERTEX_4 dominiert GL_MAP2_VERTEX_3 | ||
Zeile 58: | Zeile 59: | ||
Wenn die automatische [[Normale]]n-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 | Wenn die automatische [[Normale]]n-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 | ||
− | + | [[Bild:GlEvalCoord_LaTeX_Formel1.png|<nowiki>m = \frac{P_{p}}{P_{u}} \times \frac{P_{p}}{P_{v}}</nowiki>]] | |
Dann ist die generierte normale n gleich | Dann ist die generierte normale n gleich | ||
− | + | [[Bild:GlEvalCoord_LaTeX_Formel2.png|<nowiki>n = \frac{-}{ \left \Vert m \right \| }</nowiki>]] | |
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. | 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. | ||
Zeile 68: | Zeile 69: | ||
<br> | <br> | ||
+ | |||
== Zugehörige Wertrückgaben == | == Zugehörige Wertrückgaben == | ||
[[glIsEnabled]] mit Token GL_MAP1_VERTEX_3<br> | [[glIsEnabled]] mit Token GL_MAP1_VERTEX_3<br> | ||
Zeile 96: | Zeile 98: | ||
== Links == | == Links == | ||
− | *[ | + | *[[Tutorial_Abseits_eckiger_Welten|DGL Tutorial: Abseits eckiger Welten]] |
[[Kategorie:GL|EvalCoord]] | [[Kategorie:GL|EvalCoord]] | ||
+ | [[Kategorie:GL1.0|EvalCoord]] |
Aktuelle Version vom 15. Juli 2011, 01:29 Uhr
Inhaltsverzeichnis
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
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
Dann ist die generierte normale n gleich
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