Compartir a través de


Crear un búfer de profundidad (Direct3D 9)

Un búfer de profundidad es una propiedad del dispositivo. Para crear un búfer de profundidad administrado por Direct3D, establezca los miembros adecuados de la estructura de D3DPRESENT_PARAMETERS como se muestra en el ejemplo de código siguiente.

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

Al establecer el miembro EnableAutoDepthStencil en TRUE, se indica a Direct3D que administre los búferes de profundidad de la aplicación. Tenga en cuenta que AutoDepthStencilFormat debe establecerse en un formato de búfer de profundidad válido. La marca D3DFMT_D16 especifica un búfer de profundidad de 16 bits, si hay uno disponible.

La siguiente llamada al método IDirect3D9::CreateDevice crea un dispositivo que, a continuación, crea un búfer de profundidad.

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

El búfer de profundidad se establece automáticamente como destino de representación del dispositivo. Cuando se restablece el dispositivo, el búfer de profundidad se destruye automáticamente y se vuelve a crear en el nuevo tamaño.

Para crear una nueva superficie de búfer de profundidad, use el método IDirect3DDevice9::CreateDepthStencilSurface .

Para establecer una nueva superficie de búfer de profundidad para el dispositivo, use el método IDirect3DDevice9::SetDepthStencilSurface .

Para usar el búfer de profundidad en la aplicación, debe habilitar el búfer de profundidad. Para obtener más información, consulte Habilitación del almacenamiento en búfer de profundidad (Direct3D 9).

Búferes de profundidad