깊이 버퍼 만들기(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)을 참조하세요.

깊이 버퍼