반응형
DepthStencilState을 생성할 때 D3D11_DEPTH_STENCIL_DESC 구조체가 필요하다. 해당 구조체 멤버 중 DepthFunc이 있는데, 여기에 미리 정의된 매크로 값을 설정해줌으로써 깊이 비교를 어떻게 할 것인지 설정해줄 수 있다.
default는 D3D11_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
'게임 공부 > DirectX' 카테고리의 다른 글
atan2(arctan)을 이용하여 pitch, yaw 구하기 (0) | 2021.03.25 |
---|---|
XMVECTOR 타입 구조 - SSE (0) | 2021.03.20 |
[DirectX] Direct3D 11 programming (1) (0) | 2021.03.05 |
DirectDraw 학습 (4) - 사각형 이동시켜보기 (1) | 2020.11.23 |
DirectDraw 학습 (3) - Set pixel (0) | 2020.11.21 |
댓글