Creazione di un buffer di profondità (Direct3D 9)

Un buffer di profondità è una proprietà del dispositivo. Per creare un buffer di profondità gestito da Direct3D, impostare i membri appropriati della struttura D3DPRESENT_PARAMETERS , come illustrato nell'esempio di codice seguente.

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

Impostando il membro EnableAutoDepthStencil su TRUE, si indica a Direct3D di gestire i buffer di profondità per l'applicazione. Si noti che AutoDepthStencilFormat deve essere impostato su un formato di buffer di profondità valido. Il flag D3DFMT_D16 specifica un buffer di profondità a 16 bit, se disponibile.

La chiamata seguente al metodo IDirect3D9::CreateDevice crea un dispositivo che crea quindi un buffer di profondità.

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

Il buffer di profondità viene impostato automaticamente come destinazione di rendering del dispositivo. Quando il dispositivo viene reimpostato, il buffer di profondità viene eliminato automaticamente e ricreato nella nuova dimensione.

Per creare una nuova superficie del buffer di profondità, usare il metodo IDirect3DDevice9::CreateDepthStencilSurface .

Per impostare una nuova superficie del buffer di profondità per il dispositivo, usare il metodo IDirect3DDevice9::SetDepthStencilSurface .

Per usare il buffer di profondità nell'applicazione, è necessario abilitare il buffer di profondità. Per informazioni dettagliate, vedere Abilitazione del buffer di profondità (Direct3D 9).

Buffer di profondità