다음을 통해 공유


깊이 버퍼링 상태(Direct3D 9)

깊이 버퍼링은 숨겨진 선과 표면을 제거하는 방법입니다. 기본적으로 Direct3D는 깊이 버퍼링을 사용하지 않습니다.

깊이 버퍼에 대한 개념적 개요는 깊이 버퍼(Direct3D 9)를 참조하세요.

C++ 애플리케이션은 D3DZBUFFERTYPE 열거형의 멤버를 사용하여 새 상태 값을 지정하여 깊이 버퍼링 상태를 D3DRS_ZENABLE 렌더링 상태로 업데이트합니다.

애플리케이션이 Direct3D가 깊이 버퍼에 쓰지 못하도록 해야 하는 경우 D3DRS_ZWRITEENABLE 열거된 값을 사용하여 D3DZB_FALSE IDirect3DDevice9::SetRenderState 호출에 대한 두 번째 매개 변수로 지정할 수 있습니다.

다음 코드 예제에서는 깊이 버퍼 상태가 z 버퍼링을 사용하도록 설정되는 방법을 보여 줍니다.

// This code example assumes that d3dDevice is a 
// valid pointer to an IDirect3DDevice9 interface.
// Enable z-buffering.
d3dDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);

애플리케이션은 D3DRS_ZFUNC 렌더링 상태를 사용하여 깊이 버퍼링을 수행할 때 Direct3D에서 사용하는 비교 함수를 제어할 수도 있습니다.

Z 바이어싱은 깊이 값이 같더라도 한 표면을 다른 표면 앞에 표시하는 방법입니다. 다양한 효과에 이 기술을 사용할 수 있습니다. 일반적인 예는 벽에 그림자를 렌더링하는 것입니다. 그림자와 벽의 깊이 값은 동일합니다. 그러나 애플리케이션이 벽에 그림자를 표시하려고 합니다. 그림자에 z 바이어를 지정하면 Direct3D가 제대로 표시됩니다(D3DRS_DEPTHBIAS 참조).

렌더링 상태