建立 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 必須設定為有效的深度緩衝區格式。 如果有 16 位深度緩衝區,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) 。
相關主題