Aracılığıyla paylaş


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).

Derinlik Arabellekleri