glEvalCoord: Unterschied zwischen den Versionen
Flo (Diskussion | Beiträge) K (→Beschreibung) |
Flo (Diskussion | Beiträge) K (→Beschreibung) |
||
Zeile 47: | Zeile 47: | ||
* 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 GL benutzt abgeschätzte Werte anstatt der aktuellen Werte für die Auswertungen die aktiviert wurden. Hingegen werden immer aktuelle Werte für die Farbe, Farbindex, Normale und Texturkoordinaten verwendet. Was auch immer | + | Die GL benutzt abgeschätzte Werte anstatt der aktuellen Werte für die Auswertungen die aktiviert wurden. Hingegen werden immer aktuelle Werte für die Farbe, Farbindex, Normale und Texturkoordinaten verwendet. Was auch immer passiert, die ausgewerteten Werte überschreiben niemals die aktuellen Werte. 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]]. |
Version vom 23. September 2005, 19:32 Uhr
(Mehr Informationen/weitere Artikel) {{{1}}} |
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 GL benutzt abgeschätzte Werte anstatt der aktuellen Werte für die Auswertungen die aktiviert wurden. Hingegen werden immer aktuelle Werte für die Farbe, Farbindex, Normale und Texturkoordinaten verwendet. Was auch immer passiert, die ausgewerteten Werte überschreiben niemals die aktuellen Werte. 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
MathML Formel durch Bild ersetzen:
<math:math xmlns:math="http://www.w3.org/1998/Math/MathML"> <math:semantics> <math:mrow> <math:mfrac> <math:msub> <math:mi>P</math:mi> <math:mi>p</math:mi> </math:msub> <math:msub> <math:mi>P</math:mi> <math:mi>u</math:mi> </math:msub> </math:mfrac> <math:mo math:stretchy="false">×</math:mo> <math:mfrac> <math:msub> <math:mi>P</math:mi> <math:mi>p</math:mi> </math:msub> <math:msub> <math:mi>P</math:mi> <math:mi>v</math:mi> </math:msub> </math:mfrac> </math:mrow> <math:annotation math:encoding="StarMath 5.0">P_{p} over P_{u} times {P_{p} over P_{v}}</math:annotation> </math:semantics> </math:math>
Dann ist die generierte normale n gleich
FORMEL EINFÜGEN
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