gluPerspective: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Beschreibung)
K (Anwendung)
Zeile 53: Zeile 53:
  
 
===Anwendung===
 
===Anwendung===
'''gluPerspective''' wird nur gebraucht wenn man eine perspektivische Projektion benutzt werden soll. (siehe auch [[glOrtho]])
+
'''gluPerspective''' wird nur gebraucht wenn eine perspektivische Projektion benutzt werden soll. (siehe auch [[glOrtho]])
 
*Wo gehört '''gluPerspective''' hin?:
 
*Wo gehört '''gluPerspective''' hin?:
 
: In die Initialisierung des Forumulars um überhaupt eine Projektion zu erhalten.
 
: In die Initialisierung des Forumulars um überhaupt eine Projektion zu erhalten.

Version vom 25. Januar 2006, 12:59 Uhr

gluPerspective


Name

gluPerspective - Erstellt eine perspektivische Projektionsmatrix.


Delphi-Spezifikation

procedure gluPerspective(fovy, aspect, zNear, zFar : glDouble);


Parameter

fovy Gibt das Betrachtungsfeld (FOV) in Grad, entlang der Y-Achse, an.
aspect Gibt den Aspektratio, der das Betrachtungsfeld entlang der X-Achse setzt. Der Aspektratio ist das Verhältnis von Höhe zu Breite.
zNear Entfernung vom Betrachter zur nahen Z-Schnittfläche (muss positiv sein).
zFar Entfernung vom Betrachter zur fernen Z-Schnittfläche (muss positiv sein).


Beschreibung

gluPerspective beschreibt ein Betrachtungssichtfeld (Frustum) ins Weltkoordinatensystem hinein. Meistens setzt man den Aspektratio dabei gleich dem Aspektratio des zugewiesenen Viewports. Die von gluPerspective erstellte Matrix wird mit der aktuellen Matrix multipliziert, so als ob man glMultMatrix mit der generierten Matrix aufgerufen hätte. Um die perspektivische Matrix zu setzen, sollte man zuerst glLoadIdentity und dann gluPerspective aufrufen.

Für f = cotangent(fovy/2), sieht die erstellte Matrix so aus :

|    f				           |
|  ------  0        0            0         |
|  aspect   	    		 	   |
|					   |
|    0     f	    0		 0	   |
|					   |
|		zFar+zNear  2*zFar*zNear   |
|    0     0    ----------  ------------   |
|         	zNear-zFar   zNear-zFar	   |
|					   |
|    0     0	    -1		 0         |




Anwendung

gluPerspective wird nur gebraucht wenn eine perspektivische Projektion benutzt werden soll. (siehe auch glOrtho)

  • Wo gehört gluPerspective hin?:
In die Initialisierung des Forumulars um überhaupt eine Projektion zu erhalten.
In die Behandlung des OnResize-Events, da die Projektion an die neuen Fenstermaße angepasst werden sollte.
In den Render-Code wenn sich innerhalb des Renderdurchgangs die Projektion ändert.
  • Wo gehört gluPerspective nicht hin?:
In den Render-Code wenn sich die Projektion während des Rendervorgangs nicht ändert.

Hinweise

Die Genauigkeit des Tiefenpuffer wird von den in zNear und zFar angegebenen Werten beeinflusst. Je größer das Verhältnis von zFar zu zNear, je ineffektiver kann der Tiefenpuffer zwischen nah beieinander liegenden Oberflächen unterscheiden. Wenn r = zFar / zNear, dann gehen ungefähr log(2)r Bits and Tiefenpuffergenauigkeit verloren. Da r gegen Unendlich strebt wenn zNear gegen 0 strebt, darf zNear niemals gleich 0 gesetzt werden.


Siehe auch

glFrustum, glLoadIdentity, glMultMatrix, gluOrtho2D