Compartilhar via


Criando um buffer de profundidade (Direct3D 9)

Um buffer de profundidade é uma propriedade do dispositivo. Para criar um buffer de profundidade gerenciado pelo Direct3D, defina os membros apropriados da estrutura D3DPRESENT_PARAMETERS conforme mostrado no exemplo de código a seguir.

D3DPRESENT_PARAMETERS d3dpp; 
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed               = TRUE;
d3dpp.SwapEffect             = D3DSWAPEFFECT_COPY;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;

Ao definir o membro EnableAutoDepthStencil como TRUE, você instrui o Direct3D a gerenciar buffers de profundidade para o aplicativo. Observe que AutoDepthStencilFormat deve ser definido como um formato de buffer de profundidade válido. O sinalizador D3DFMT_D16 especifica um buffer de profundidade de 16 bits, se houver um disponível.

A chamada a seguir para o método IDirect3D9::CreateDevice cria um dispositivo que cria um buffer de profundidade.

if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
                                D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                &d3dpp, &d3dDevice ) ) )
return E_FAIL;

O buffer de profundidade é definido automaticamente como o destino de renderização do dispositivo. Quando o dispositivo é redefinido, o buffer de profundidade é automaticamente destruído e recriado no novo tamanho.

Para criar uma nova superfície de buffer de profundidade, use o método IDirect3DDevice9::CreateDepthStencilSurface .

Para definir uma nova superfície de buffer de profundidade para o dispositivo, use o método IDirect3DDevice9::SetDepthStencilSurface .

Para usar o buffer de profundidade em seu aplicativo, você precisa habilitar o buffer de profundidade. Para obter detalhes, consulte Habilitando o buffer de profundidade (Direct3D 9).

Buffers de profundidade