2013-04-28 2 views
0

Windows Phone 응용 프로그램의 DirectX11에서 계층 모델을 렌더링하고 싶습니다. 트리 기반 계층 모델을 렌더링하는 방법을 모르겠습니다. 는 OpenGL에서 DirectX 11에서 계층 모델을 렌더링하는 과정은 무엇입니까?

는 일반적인 흐름과 같이 나타났다 : 노드의 아이에 (로 glVertex 호출을 통해) 노드를위한 1. 푸시 매트릭스 2. 내려 놔 정점 3. 같이 Recurse 4. 팝 매트릭스

그러나 DirectX에서 이것이 어떻게 보이는지 확신 할 수 없습니다. 먼저 모든 정점 및 꼭지점 인덱스를 큰 버퍼로 복사 한 다음 DrawIndexed 호출을 사용하여 렌더링하는 것이 좋습니다.

이것은 계층 적 모델을로드하고 표시하기 위해 동일한 트리를 두 번 반복해야한다는 것을 의미하기 때문에 전통적인 계층 모델에 불편한 것처럼 보입니다. 마찬가지로 : 1. 트리 구조를 반복하고 정점 및 정점 인덱스를 일차원 배열로 전개합니다. (DrawIndexed 호출을 통해) 노드를위한 2. 푸시 매트릭스 3. 내려 놔 정점 노드의 아이에 4. 같이 Recurse (2 단계)이 정렬하고 난의 지저분한 느낌

5. 팝 매트릭스 이런 식으로 의도되었는지 확실하지 않습니다.

나는 이것이 일반적인 질문이지만, 설명이나 수정은 DX에 대한 나의 이해를위한 경이로움을 줄 것이라고 생각한다.

감사합니다.

답변

1

Direct3D를 사용하여 OpenGL에 대해 설명한 것과 동일한 방법을 사용할 수 있습니다. 트리를 반복하고 각 노드에 대해 정점 및 인덱스 버퍼를 바인딩하고 즉시 그립니다.

성능 향상을 위해 제안 된대로 먼저 그림을 그리지 않고 트리를 반복하고 정점과 인덱스 데이터를 두 개의 큰 버퍼에만 쓰는 것이 좋습니다. 그런 다음 모든 프레임에 대해 OpenGL에서와 마찬가지로 버퍼를 설정하고 트리를 반복합니다. 모든 노드에 대해 변환을 바인드하고 이미 바인드 된 버퍼에서 연관된 프리미티브 범위를 그립니다.

지오메트리가 정점 레벨에서 정적 인 경우 (개별 정점을 수정/추가/삭제할 필요 없음) 버퍼를 원하는만큼 자주 다시 사용할 수 있습니다.

요구 사항과 하드웨어에 따라 최상의 방법을 찾기 위해 프로파일 링을해야합니다.

+0

저가형 Windows Phone 장치 (예 : Lumia 520 및 620)를 대상으로하므로 이상적인 솔루션이 될 수 있습니다. 두 스타일을 모두 시험해보고 성능을 비교해 보겠습니다. 당신의 도움을 주셔서 감사합니다! – Nico