본문 바로가기
게임 공부/DirectX

깊이스텐실 Desc 중 깊이 func 값 관련 - D3D11_COMPARISON_FUNC

by woohyeon 2021. 3. 18.
반응형

DepthStencilState을 생성할 때 D3D11_DEPTH_STENCIL_DESC 구조체가 필요하다. 해당 구조체 멤버 중 DepthFunc이 있는데, 여기에 미리 정의된 매크로 값을 설정해줌으로써 깊이 비교를 어떻게 할 것인지 설정해줄 수 있다.

defaultD3D11_COMPARISON_LESS란 값으로 설정되는데, 이는 기존의 z보다 현재 정점의 z가 더 작을 때, 즉 현재 정점이 더 앞에 있을 때만 z값(깊이)를 갱신한다. 만약 두 정점의 z값이 동일하면 갱신하지 않는다.

즉 같은 깊이의 빨간색->초록색 삼각형 순서로 겹쳐서 그리면 겹치는 부분은 그대로 빨간색이다. 이는 원하는 결과일 수도 아닐 수도 있다. 왜냐면 겹치는 부분 중 나중에 그린 삼각형은 같은 깊이임에도 무시되기 때문에..

이를 위해 같은 깊이라면 나중에 그리는 삼각형이 더 앞에 왔으면 좋겠다. 갱신되었으면 좋겠다라고 한다면

D3D11_COMPARISON_LESS_EQUAL란 값을 사용한다. 그러면 현재 깊이가 기존의 깊이보다 더 적거나(앞에 있거나) 같을 경우에 z값을 갱신한다.

위 매크로 값은 아래를 참고

docs.microsoft.com/en-us/windows/win32/api/d3d11/ne-d3d11-d3d11_comparison_func




댓글