(Direct3D 9) 创建深度缓冲区
深度缓冲区是设备的一个属性。 若要创建由 Direct3D 管理的深度缓冲区,请设置 D3DPRESENT_PARAMETERS 结构的相应成员,如以下代码示例所示。
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_COPY;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
通过将 EnableAutoDepthStencil 成员设置为 TRUE,指示 Direct3D 管理应用程序的深度缓冲区。 请注意,AutoDepthStencilFormat 必须设置为有效的深度缓冲区格式。 D3DFMT_D16 标志指定 16 位深度缓冲区(如果可用)。
以下对 IDirect3D9::CreateDevice 方法的调用将创建一个设备,然后创建深度缓冲区。
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &d3dDevice ) ) )
return E_FAIL;
深度缓冲区会自动设置为设备的呈现目标。 重置设备时,深度缓冲区会自动销毁,并重新创建新大小。
若要创建新的深度缓冲区图面,请使用 IDirect3DDevice9::CreateDepthStencilSurface 方法。
若要为设备设置新的深度缓冲区图面,请使用 IDirect3DDevice9::SetDepthStencilSurface 方法。
若要在应用程序中使用深度缓冲区,需要启用深度缓冲区。 有关详细信息,请参阅 (Direct3D 9) 启用深度缓冲 。
相关主题