2014-05-21 1 views
2

나는 dx11로 간단한 사각형을 그리려하지만, 각 삼각형의 인덱스 순서에 따라 그것이 나타나는지 여부가 결정됩니다. 래스터 라이저 상태에서 cull 모드를 none으로 설정했지만 아무 것도 변경하지 않는 것 같습니다.DX11의 정점 와인딩 주문

첫 번째 삼각형의 정점을 2, 1, 2 대신 0, 1, 2로 지정하면 삼각형이 표시되지 않습니다. 그래서 제 질문은, 컬 모드에 관계없이 특정 방식으로 삼각형의 버텍스를 정렬해야합니까?

P. 저는 삼각형리스트가 아닌 스트립을 그리고 있습니다.

UINT indices[] = {2, 1, 0, 
        1, 3, 0}; 


MeshVertex vertices[] = 
{ 
    { Vector3(1.0f, 1.0f, 0.0f)}, //Top Right 
    { Vector3(-1.0f, -1.0f, 0.0f)}, //Bottom Left 
    { Vector3(1.0f, -1.0f, 0.0f)}, //Bottom Right 
    { Vector3(-1.0f, 1.0f, 0.0f)} //Top Left 
}; 

mesh = new Mesh(vertices, indices, 4, 6, shader); 
+1

DX의 시계 방향 순서. – CodeAngry

답변

2

그래서 내 질문입니다, 내가 상관없이 도태 모드의 특정 방법으로 삼각형의 정점을 주문해야합니까?

** 시계 방향으로 순서대로 정점을 그리고 기본 컬부 모드를 변경하지 마십시오/정의합니다. **

삼각형 표시 할 수 있는지 여부를 확인하려면 , 당신이

2 개 요인을 고려에

  1. 앞면 또는 권선 순서라고 부르는 경우 기본적으로 Direct3D는 시계 방향 순서로 정의 된 정점을 정면으로 처리하며 정면 이외의 모든면은 뒷면입니다.
  2. 컬링 모드에서는 기본적으로 Direct3D가 뒷면 (반 시계 방향으로 정의 된 정점의면)을 컬합니다.

당신은 D3D11_RASTERIZER_DESC 구조에서 정면 및 컬링 모드를 설정할 수 있습니다

두 삼각형은 같은 순서 및 D3D11_CULL_NONE에 있었기 때문에 당신이 NONE으로 컬링 모드를 변경할 때 차이를 보지 못했다 이유는 어떤 얼굴을 도적질하지 않았 음을 의미합니다.

삼각형 1이 시계 방향이고 삼각형 2가 시계 반대 방향 인 경우, 컬 모드를 D3D11_CULL_FRONT 또는 D3D11_CULL_BACK으로 설정하고 D3D11_CULL_NONE으로 설정하면 두 가지를 모두 볼 때 하나의 삼각형 만 보입니다.