Stan buforowania głębokości (Direct3D 9)
Buforowanie głębokości to metoda usuwania ukrytych linii i powierzchni. Domyślnie funkcja Direct3D nie używa buforowania głębokości.
Aby zapoznać się z koncepcyjnym omówieniem buforów głębokości, zobacz Bufory Głębokści (Direct3D 9).
Aplikacje języka C++ aktualizują stan buforowania głębokości za pomocą stanu renderowania D3DRS_ZENABLE, wykorzystując element członkowski wyliczenia D3DZBUFFERTYPE do określenia nowej wartości stanu.
Jeśli aplikacja musi uniemożliwić zapisywanie Direct3D w buforze głębokości, może użyć wyliczonej wartości D3DRS_ZWRITEENABLE, określając D3DZB_FALSE jako drugi parametr przy wywołaniu IDirect3DDevice9::SetRenderState.
W poniższym przykładzie kodu pokazano, jak jest ustawiony stan buforu głębokości w celu włączenia buforowania z.
// This code example assumes that d3dDevice is a
// valid pointer to an IDirect3DDevice9 interface.
// Enable z-buffering.
d3dDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
Aplikacja może również użyć stanu renderowania D3DRS_ZFUNC do kontrolowania funkcji porównania używanej przez funkcję Direct3D podczas buforowania głębokości.
Z-biasing to metoda wyświetlania jednej powierzchni przed drugą, nawet jeśli ich wartości głębokości są takie same. Tej techniki można użyć do różnych efektów. Typowym przykładem jest renderowanie cieni na ścianach. Zarówno cień, jak i ściana mają taką samą wartość głębokości. Chcesz jednak, aby aplikacja pokazywała cień na ścianie. Dodanie odchylenia Z do cienia sprawia, że Direct3D poprawnie wyświetla cienie (zobacz D3DRS_DEPTHBIAS).
Tematy pokrewne