2013-11-27 5 views
0

DirectX가 폴리곤 와인딩 주문을 어떻게 결정합니까? 특히 배면 컬링에 대해 궁금합니다. 이것을 연구 한 결과, DX가 표면 법선을 계산하고 카메라 벡터의 내적을 취하고 그 값이 0보다 클 경우 제안 된 것을 보았습니다.DirectX가 권선 순서를 어떻게 결정합니까?

먼저 이것이 DirectX가 실제로 사용하는 기법입니까? 두 번째로, 모든 표면에 두 개의 법선 - 다른 표면에 반대되는 두 개의 법선이있는 경우 - DirectX에서 사용할 표준을 어떻게 알 수 있습니까?

답변

4

아니 그 기술을 사용 아니에요, 아니 OpenGL이나 directx 카메라 뷰 벡터의 개념을 가지고. 먼저 정점이 정규화 된 장치 좌표 공간으로 변환되고 (사용자가 먼저 정점 쉐이더의 사영 공간을 게시하고 xyz 구성 요소를 w로 나눠서 변형 시킴) 이 좌표계에서 삼각형의 '부호있는 영역'을 계산하기 위해 꼭지점의 x와 y 성분을 사용할 수 있습니다.

float signedArea = 0; 
    for(int k = 1; k < output->count; k++) { 
     signedArea += (output->vertices[k - 1].values[0] * output->vertices[k - 0].values[1]); 
     signedArea -= (output->vertices[k - 0].values[0] * output->vertices[k - 1].values[1]); 
    } 

정점이 시계 방향인지 반 시계 방향인지에 따라 양수 또는 음수 영역을 제공합니다. 뒤에있는 삼각형을 보면 양의 영역이 음수가되고 반대의 경우도 마찬가지입니다. 그리고이 값은 앞뒤, 또는 양쪽 글꼴을 래스터 화할지 여부를 결정할 때 연속적으로 사용됩니다. & 뒤 향하는 삼각형.