glDepthRange: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Beschreibung)
(Beschreibung)
Zeile 30: Zeile 30:
 
'''glDepthRange''' gibt an auf welchen Bereich der Fensterkoordinaten die Werte von -1.0 bis 1.0 linear abgebildet werden. Also wie aus dem Z-Wert eines Fragmentes, der an dieser Stelle im Bereich von -1.0 bis 1.0 liegt, der Wert für den DepthBuffer berechnet wird. Unabhängig von der tatsächlichen Implementierung darf dieser Wert im Intervall von 0.0 bis 1.0 liegen. Eine Z-Koordinate von -1.0 wird auf den Wert des Parameters near abgebildet und 1.0 entspricht den Wert des Parameters far.  
 
'''glDepthRange''' gibt an auf welchen Bereich der Fensterkoordinaten die Werte von -1.0 bis 1.0 linear abgebildet werden. Also wie aus dem Z-Wert eines Fragmentes, der an dieser Stelle im Bereich von -1.0 bis 1.0 liegt, der Wert für den DepthBuffer berechnet wird. Unabhängig von der tatsächlichen Implementierung darf dieser Wert im Intervall von 0.0 bis 1.0 liegen. Eine Z-Koordinate von -1.0 wird auf den Wert des Parameters near abgebildet und 1.0 entspricht den Wert des Parameters far.  
 
<br>
 
<br>
Bei der Standardeinstellung von glDepthRange(0.0,1.0) wird der DepthBuffer vollständig genutzt. Der Wert von far muß aber nicht zwangsläufig größer als der von near sind. Früher hat man den DepthBuffer nur jeden zweiten Frame gelöscht, abwechselnd die Bereiche von 0.0 bis 0.5 und 1.0 bis 0.5 genutzt und die Richtung des DepthTests dementsprechend angepaßt. Aufgrund von HW Optimierungen wie z.B. Hyper-Z usw. ist das aber heutzutage nicht mehr angebracht und führt eher zu einem Geschwindigkeitsnachteil.
+
Früher hat man den DepthBuffer nur jeden zweiten Frame gelöscht, abwechselnd die Bereiche von 0.0 bis 0.5 und 1.0 bis 0.5 genutzt und die Richtung des DepthTests dementsprechend angepaßt. Aufgrund von HW Optimierungen wie z.B. Hyper-Z usw. ist das aber heutzutage nicht mehr angebracht und führt eher zu einem Geschwindigkeitsnachteil.
  
 
== Hinweise ==
 
== Hinweise ==

Version vom 3. September 2004, 15:44 Uhr

glDepthRange


Name

glDepthRange - Bestimmt wie z-Werte von normalisierten Gerätekoordinaten (Device coordinates) zu Fensterkoordinaten (Window coordinates) umgerechnet werden.


Delphi-Spezifikation

procedure glDepthRange(zNear: TGLclampd; zFar: TGLclampd);


Parameter

near Beschreibt wie die vordere Schnittebene in Fensterkoordinaten umgerechnet werden soll.
Vorgabewert ist 0.
far Beschreibt, wie die hintere Schnittebene in Fensterkoordinaten umgerechnet werden soll.
Vorgabewert ist 0.


Beschreibung

Nach dem die Z-Koordinaten abgeschnitten (clipping) und durch w geteilt wurden, reichen sie von -1.0 bis 1.0 im Bezug auf die vordere und hintere Schnittebene.
glDepthRange gibt an auf welchen Bereich der Fensterkoordinaten die Werte von -1.0 bis 1.0 linear abgebildet werden. Also wie aus dem Z-Wert eines Fragmentes, der an dieser Stelle im Bereich von -1.0 bis 1.0 liegt, der Wert für den DepthBuffer berechnet wird. Unabhängig von der tatsächlichen Implementierung darf dieser Wert im Intervall von 0.0 bis 1.0 liegen. Eine Z-Koordinate von -1.0 wird auf den Wert des Parameters near abgebildet und 1.0 entspricht den Wert des Parameters far.
Früher hat man den DepthBuffer nur jeden zweiten Frame gelöscht, abwechselnd die Bereiche von 0.0 bis 0.5 und 1.0 bis 0.5 genutzt und die Richtung des DepthTests dementsprechend angepaßt. Aufgrund von HW Optimierungen wie z.B. Hyper-Z usw. ist das aber heutzutage nicht mehr angebracht und führt eher zu einem Geschwindigkeitsnachteil.

Hinweise

Es ist nicht notwendig, dass near kleiner als far ist. Umgekehrtes Mapping z.B. mit 1, 0 wird akzeptiert


Fehlermeldungen

GL_INVALID_OPERATION wird generiert wenn glDepthRange innerhalb eines glBegin-glEnd Blocks aufgerufen wird.


Zugehörige Wertrückgaben

glGet mit Token GL_Depth_Range


Siehe auch

glDepthFunc, glViewport