Tiefenpufferstatus (Direct3D 9)

Tiefenpufferung ist eine Methode zum Entfernen ausgeblendeter Linien und Oberflächen. Direct3D verwendet standardmäßig keine Tiefenpufferung.

Eine konzeptionelle Übersicht über Tiefenpuffer finden Sie unter Tiefenpuffer (Direct3D 9).

C++-Anwendungen aktualisieren den Tiefenpufferzustand mit dem D3DRS_ZENABLE Renderzustand, wobei ein Member der D3DZBUFFERTYPE-Enumeration verwendet wird, um den neuen Zustandswert anzugeben.

Wenn Ihre Anwendung verhindern muss, dass Direct3D in den Tiefenpuffer schreibt, kann sie den D3DRS_ZWRITEENABLE aufgezählten Wert verwenden und D3DZB_FALSE als zweiten Parameter für den Aufruf von IDirect3DDevice9::SetRenderState angeben.

Das folgende Codebeispiel zeigt, wie der Tiefenpufferzustand so festgelegt ist, dass Z-Buffering aktiviert wird.

// This code example assumes that d3dDevice is a 
// valid pointer to an IDirect3DDevice9 interface.
// Enable z-buffering.
d3dDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);

Ihre Anwendung kann auch den D3DRS_ZFUNC Renderzustand verwenden, um die Vergleichsfunktion zu steuern, die Direct3D beim Durchführen der Tiefenpufferung verwendet.

Z-Biasing ist eine Methode zum Anzeigen einer Oberfläche vor einer anderen, auch wenn ihre Tiefenwerte identisch sind. Sie können diese Technik für eine Vielzahl von Effekten verwenden. Ein gängiges Beispiel ist das Rendern von Schatten an Wänden. Sowohl der Schatten als auch die Wand haben den gleichen Tiefenwert. Sie möchten jedoch, dass Ihre Anwendung den Schatten an der Wand zeigt. Wenn Sie dem Schatten eine Z-Verzerrung geben, werden diese von Direct3D ordnungsgemäß angezeigt (siehe D3DRS_DEPTHBIAS).

Renderzustände