Partilhar 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 Depth Buffers (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 a sua aplicação precisar impedir que o Direct3D escreva no buffer de profundidade, pode usar o valor enumerado D3DRS_ZWRITEENABLE, especificar D3DZB_FALSE como o segundo parâmetro para a chamada para IDirect3DDevice9::SetRenderState.

O exemplo de código a seguir mostra como o estado depth-buffer é definido para habilitar z-buffering.

// 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.

Z-biasing é um método de exibir uma superfície na frente de outra, mesmo que seus valores de profundidade sejam os mesmos. Você pode usar esta técnica para uma variedade de efeitos. Um exemplo comum é a renderização de sombras nas paredes. Tanto a sombra como a parede têm o mesmo valor de profundidade. No entanto, você deseja que seu aplicativo mostre a sombra na parede. Dar um z-bias à sombra faz com que o Direct3D a exiba corretamente (consulte D3DRS_DEPTHBIAS).

Render Estados