Compartilhar via


Estado de buffer de profundidade (Direct3D 9)

O buffer de profundidade é um método de remoção de linhas e superfícies ocultas. Por padrão, o Direct3D não usa buffer de profundidade.

Para obter uma visão geral conceitual dos buffers de profundidade, consulte Buffers de profundidade (Direct3D 9).

Os aplicativos C++ atualizam o estado de buffer de profundidade com o estado de renderização D3DRS_ZENABLE, usando um membro da enumeração D3DZBUFFERTYPE para especificar o novo valor de estado.

Se o aplicativo precisar impedir que o Direct3D grave no buffer de profundidade, ele poderá usar o valor enumerado D3DRS_ZWRITEENABLE, especificando D3DZB_FALSE como o segundo parâmetro para a chamada para IDirect3DDevice9::SetRenderState.

O exemplo de código a seguir mostra como o estado de buffer de profundidade está definido para habilitar o 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);

Seu aplicativo também pode usar o estado de renderização D3DRS_ZFUNC para controlar a função de comparação que o Direct3D usa ao executar o buffer de profundidade.

O viés Z é um método de exibição de uma superfície na frente de outra, mesmo que seus valores de profundidade sejam os mesmos. Você pode usar essa técnica para uma variedade de efeitos. Um exemplo comum é renderizar sombras em paredes. A sombra e a parede têm o mesmo valor de profundidade. No entanto, você deseja que seu aplicativo mostre a sombra na parede. Dar um viés z à sombra faz com que o Direct3D os exiba corretamente (consulte D3DRS_DEPTHBIAS).

Renderizar estados