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).
Tópicos relacionados