Stato di buffering profondità (Direct3D 9)
Il buffer di profondità è un metodo per rimuovere linee e superfici nascoste. Per impostazione predefinita, Direct3D non usa il buffer di profondità.
Per una panoramica concettuale dei buffer di profondità, vedere Buffer di profondità (Direct3D 9).
Le applicazioni C++ aggiornano lo stato di buffer di profondità con lo stato di rendering D3DRS_ZENABLE, usando un membro dell'enumerazione D3DZBUFFERTYPE per specificare il nuovo valore di stato.
Se l'applicazione deve impedire a Direct3D di scrivere nel buffer di profondità, può usare il valore enumerato D3DRS_ZWRITEENABLE, specificando D3DZB_FALSE come secondo parametro per la chiamata a IDirect3DDevice9::SetRenderState.
Nell'esempio di codice seguente viene illustrato il modo in cui lo stato del buffer di profondità è impostato per abilitare il buffer z.
// This code example assumes that d3dDevice is a
// valid pointer to an IDirect3DDevice9 interface.
// Enable z-buffering.
d3dDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
L'applicazione può anche usare lo stato di rendering D3DRS_ZFUNC per controllare la funzione di confronto usata da Direct3D durante l'esecuzione del buffer di profondità.
Z-biasing è un metodo per visualizzare una superficie davanti a un'altra, anche se i valori di profondità sono uguali. È possibile usare questa tecnica per un'ampia gamma di effetti. Un esempio comune è il rendering di ombreggiature sulle pareti. Sia l'ombra che il muro hanno lo stesso valore di profondità. Tuttavia, si vuole che l'applicazione mostri l'ombra sulla parete. Dando un pregiudizio z all'ombreggiatura rende Direct3D visualizzarli correttamente (vedere D3DRS_DEPTHBIAS).
Argomenti correlati