Estado de almacenamiento en búfer de profundidad (Direct3D 9)

El almacenamiento en búfer de profundidad es un método para quitar líneas y superficies ocultas. De forma predeterminada, Direct3D no usa el almacenamiento en búfer de profundidad.

Para obtener información general conceptual sobre los búferes de profundidad, consulte Búferes de profundidad (Direct3D 9).

Las aplicaciones de C++ actualizan el estado de almacenamiento en búfer de profundidad con el estado de representación D3DRS_ZENABLE, mediante un miembro de la enumeración D3DZBUFFERTYPE para especificar el nuevo valor de estado.

Si la aplicación necesita impedir que Direct3D escriba en el búfer de profundidad, puede usar el valor enumerado D3DRS_ZWRITEENABLE, especificando D3DZB_FALSE como segundo parámetro para la llamada a IDirect3DDevice9::SetRenderState.

En el ejemplo de código siguiente se muestra cómo se establece el estado del búfer de profundidad para habilitar el almacenamiento en búfer z.

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

La aplicación también puede usar el D3DRS_ZFUNC estado de representación para controlar la función de comparación que Usa Direct3D al realizar el almacenamiento en búfer de profundidad.

El sesgo Z es un método para mostrar una superficie delante de otra, incluso si sus valores de profundidad son los mismos. Puede usar esta técnica para una variedad de efectos. Un ejemplo común es representar sombras en paredes. Tanto la sombra como la pared tienen el mismo valor de profundidad. Sin embargo, quiere que la aplicación muestre la sombra en la pared. Dar un sesgo z a la sombra hace que Direct3D los muestre correctamente (vea D3DRS_DEPTHBIAS).

Estados de representación