glFrustum: Unterschied zwischen den Versionen
Flash (Diskussion | Beiträge) K (=Parameter=) |
K (Trennlinien entfernt) |
||
Zeile 3: | Zeile 3: | ||
<br> | <br> | ||
== Name == | == Name == | ||
− | |||
'''glFrustum''' - Multipliziert die aktuelle Matrix mit einer perspektivischen Matrix. | '''glFrustum''' - Multipliziert die aktuelle Matrix mit einer perspektivischen Matrix. | ||
<br> | <br> | ||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
− | |||
procedure '''glFrustum'''(''left'', ''right'', ''bottom'', ''top'', ''zNear'', ''zFar'' : glDouble); | procedure '''glFrustum'''(''left'', ''right'', ''bottom'', ''top'', ''zNear'', ''zFar'' : glDouble); | ||
<br> | <br> | ||
== Parameter == | == Parameter == | ||
− | |||
<table border=1 rules=all> | <table border=1 rules=all> | ||
<tr> | <tr> | ||
Zeile 31: | Zeile 28: | ||
<br> | <br> | ||
== Beschreibung == | == Beschreibung == | ||
− | |||
'''glFrustum''' beschreibt eine perspektivische Matrix, die eine perspektivische Projektion herstellt. Die aktuelle Matrix (siehe [[glMatrixMode]]) wird mit dieser Matrix multipliziert, und dieses Ergebnis ersetzt die aktuelle Matrix, als ob [[glMultMatrix]] mit folgender Matrix aufgerufen worden wäre : | '''glFrustum''' beschreibt eine perspektivische Matrix, die eine perspektivische Projektion herstellt. Die aktuelle Matrix (siehe [[glMatrixMode]]) wird mit dieser Matrix multipliziert, und dieses Ergebnis ersetzt die aktuelle Matrix, als ob [[glMultMatrix]] mit folgender Matrix aufgerufen worden wäre : | ||
Zeile 55: | Zeile 51: | ||
== Hinweise == | == Hinweise == | ||
− | |||
Die Genauigkeit des Tiefenpuffers hängt von den in Z-Nah und Z-Fern angegebenen Werte ab. Je größer der Ratio von Z-Fern zu Z-Nah ist, desto niedriger wird der Tiefenpuffeer aufgelöst. | Die Genauigkeit des Tiefenpuffers hängt von den in Z-Nah und Z-Fern angegebenen Werte ab. Je größer der Ratio von Z-Fern zu Z-Nah ist, desto niedriger wird der Tiefenpuffeer aufgelöst. | ||
Zeile 66: | Zeile 61: | ||
<br> | <br> | ||
== Fehlermeldungen == | == Fehlermeldungen == | ||
− | |||
'''GL_INVALID_VALUE''' wird generiert, wenn ''zNear'' oder ''zFar'' nicht positiv sind. | '''GL_INVALID_VALUE''' wird generiert, wenn ''zNear'' oder ''zFar'' nicht positiv sind. | ||
Zeile 73: | Zeile 67: | ||
<br> | <br> | ||
== Zugehörige Wertrückgaben == | == Zugehörige Wertrückgaben == | ||
− | |||
[[glGet]] mit dem Token '''GL_MATRIX_MODE'''.<br> | [[glGet]] mit dem Token '''GL_MATRIX_MODE'''.<br> | ||
[[glGet]] mit dem Token '''GL_MODELVIEW_MATRIX'''.<br> | [[glGet]] mit dem Token '''GL_MODELVIEW_MATRIX'''.<br> | ||
Zeile 81: | Zeile 74: | ||
<br> | <br> | ||
== Siehe auch == | == Siehe auch == | ||
− | |||
[[glOrtho]], [[glMatrixMode]], [[glMultMatrix]], [[glPushMatrix]], [[glViewport]] | [[glOrtho]], [[glMatrixMode]], [[glMultMatrix]], [[glPushMatrix]], [[glViewport]] |
Version vom 16. August 2004, 00:55 Uhr
Inhaltsverzeichnis
glFrustum
Name
glFrustum - Multipliziert die aktuelle Matrix mit einer perspektivischen Matrix.
Delphi-Spezifikation
procedure glFrustum(left, right, bottom, top, zNear, zFar : glDouble);
Parameter
left, right | Gibt die Koordinaten für die linke bzw. rechte (vertikale) Schnittfläche an. |
bottom, top | Gibt die Koordinaten für die untere bzw. obere (horizontale) Schnittfläche an. |
zNear, zFar | Gibt den Abstand zur Nah- bzw. Weit-Tiefenschnittfläche an. Beide Entfernungen müssen positiv sein. |
Beschreibung
glFrustum beschreibt eine perspektivische Matrix, die eine perspektivische Projektion herstellt. Die aktuelle Matrix (siehe glMatrixMode) wird mit dieser Matrix multipliziert, und dieses Ergebnis ersetzt die aktuelle Matrix, als ob glMultMatrix mit folgender Matrix aufgerufen worden wäre :
| A 0 C 0 | | 0 B D 0 | | 0 0 E F | | 0 0 -1 0 |
Wobei gilt :
A = (2 * Z-Fern) / (Rechts - Links) B = (2 * Z-Nah) / (Oben - Unten) C = (Rechts + Links) / (Rechts - Links) D = (Oben + Unten) / (Oben - Unten) E = -(Z-Fern + Z-Nah) / (Z-Fern - Z-Nah) F = (-2 * Z-Fern * Z-Nah) / (Z-Fern - Z-Nah)
Normalerweise ist der Matrizenmodus GL_PROJECTION, (Links, Unten, -Z-Fern) und (Rechts, Oben, -Z-Nah) beschreiben die Punkte auf der Nah-Schnittfläche, die auf die linkere untere, und obere rechte Ecke des Fensters gelegt werden, unter Annahme dass Auge liegt bei (0,0,0). - Z-Fern gibt dabei die Position der Fern-Schnittfläche an. Sowohl Z-Fern als auch Z-Nah müssen positiv sein.
Mittels glPushMatrix und glPopMatrix kann man Matrizen auf dem Stack sichern bzw. wieder zurücknehmen.
Hinweise
Die Genauigkeit des Tiefenpuffers hängt von den in Z-Nah und Z-Fern angegebenen Werte ab. Je größer der Ratio von Z-Fern zu Z-Nah ist, desto niedriger wird der Tiefenpuffeer aufgelöst.
Wenn
r = Z-Nah / Z-Fern
dann gehen ~ log 2*r Bits an Tiefenpuffergenauigkeit verloren. Da r gegen unendlichs strebt, wenn Z-Nah gegen Null geht, darf Z-Nah niemals gleich 0 sein.
Fehlermeldungen
GL_INVALID_VALUE wird generiert, wenn zNear oder zFar nicht positiv sind.
GL_INVALID_OPERATION wird generiert, wenn glFrustum zwischen einem glBegin und dem zugehörigen glEnd aufgerufen wird.
Zugehörige Wertrückgaben
glGet mit dem Token GL_MATRIX_MODE.
glGet mit dem Token GL_MODELVIEW_MATRIX.
glGet mit dem Token GL_PROJECTION_MATRIX.
glGet mit dem Token GL_TEXTURE_MATRIX.
Siehe auch
glOrtho, glMatrixMode, glMultMatrix, glPushMatrix, glViewport