2011-01-19 2 views
2

나는 정점 필드를 렌더링하는 간단한 DirectX 앱을 만들었습니다. (위에서 볼 경우) 정점과 같이 표현된다 :DirectX : "참조"폴리곤

|\|\|\|\| 
|\|\|\|\| 

각 삼각형은 다음과 같이 표현된다 : 다각형 반하지 렌더링되는 것을 의미하지만,이되어야

1 
|\ 
2 3 

. 어쨌든 평면에서 볼 때 평면은 완벽합니다.

그러나 다른 레벨에서 볼 때 일부 다각형은 투명하고 사용자는 그 뒤에있는 지오메트리를 볼 수 있습니다. 나는이 일이 일어나고있는 곳을 강조했다.

저는 이것이 기본적인 초보자 문제라고 생각합니다. 내가 뭘 놓치고 있니? 내 래스터 라이저 설명은 다음과 같습니다

new RasterizerStateDescription 
           { 
            CullMode = CullMode.Front, 
            IsAntialiasedLineEnabled = true, 
            IsMultisampleEnabled = true, 
            IsDepthClipEnabled = true, 
            IsFrontCounterclockwise = false, 
            IsScissorEnabled = true, 
            DepthBias = 1, 
            DepthBiasClamp = 1000.0f, 
            FillMode = FillMode.Wireframe, 
            SlopeScaledDepthBias = 1.0f 
           }; 

alt text

답변

0

밝혀졌습니다. 깊이 스텐실 버퍼가 설정되지 않았습니다. 오 잘.

3

이것은 의도적으로 설계된 동작입니다. FillMode.Wireframe은 각 삼각형의 가장자리를 선으로 그립니다. 그게 다야.

단색 채우기 모드와 깊이 쓰기 및 색상 마스크 (D3D11 용어로는 RenderTargetWriteMask)로 된 첫 번째 패스와 깊이 테스트 (깊이 쓰기 제외) 및 와이어 프레임 모드가 설정된 두 번째 테스트가 수행됩니다. 선과 삼각형이 같은 방식으로 래스터 화되지 않기 때문에 (그리고 그 z가 동일한 조각 위치에서 다를 수 있기 때문에) 심도 바이어스가 필요할 것입니다.

BTW,이 기술은 은선 제거라고합니다. 자세한 내용은 this presentation을 확인하십시오.

+0

FillMode.Solid와 동일합니다. 나는 방금 스텐실 버퍼를 놓쳤다 고 생각했습니다. 하지만 어쨌든 정보 주셔서 감사합니다. –

+0

네, 숨겨진 선 제거 효과를 원했던 것 같습니다. 깊이 스텐실 버퍼가 있어도 폴리곤을 "볼 수 있습니다". – Stringer