Derinlik Arabelleği Oluşturma (Direct3D 9)
Derinlik arabelleği, cihazın bir özelliğidir. Direct3D tarafından yönetilen bir derinlik arabelleği oluşturmak için, aşağıdaki kod örneğinde gösterildiği gibi D3DPRESENT_PARAMETERS yapısının uygun üyelerini ayarlayın.
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_COPY;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
EnableAutoDepthStencil üyesini TRUE olarak ayarlayarak, Direct3D'ye uygulama için derinlik arabelleklerini yönetmesini bildirirsiniz. AutoDepthStencilFormat'ın geçerli bir derinlik arabellek biçimine ayarlanması gerektiğini unutmayın. D3DFMT_D16 bayrağı, varsa 16 bit derinlikli bir arabellek belirtir.
IDirect3D9::CreateDevice yöntemine yapılan aşağıdaki çağrı, derinlik arabelleği oluşturan bir cihaz oluşturur.
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &d3dDevice ) ) )
return E_FAIL;
Derinlik arabelleği otomatik olarak cihazın render hedefi olarak ayarlanır. Cihaz sıfırlandığında derinlik arabelleği otomatik olarak yok edilir ve yeni boyutta yeniden oluşturulur.
Yeni bir derinlik arabellek yüzeyi oluşturmak için IDirect3DDevice9::CreateDepthStencilSurface yöntemini kullanın.
Cihaz için yeni bir derinlik tampon yüzeyi ayarlamak için IDirect3DDevice9::SetDepthStencilSurface yöntemini kullanın.
Uygulamanızda derinlik arabelleği kullanmak için derinlik arabelleği etkinleştirmeniz gerekir. Ayrıntılar için bkz. Derinlik Tamponlamasını Etkinleştirme (Direct3D 9).
İlgili konular