최적화
좀더 효과적으로 메쉬를 렌더링하기 위해서는 버텍스와 인덱스를 재구성 하는 작업이 필요하다. (메쉬최적화)
HRESULT ID3DXMesh::OptimizeInplace(
DWORD Flags,
CONST DWORD *pAdjacencyIn, // 최적화되지 않은 메쉬의 인접 배열로의 포인터
DWORD* pAdjacencyOut, // 이 배열은 반드시 ID3DXMesh::GetNumFaces()*3수의 요수를 가지고 있어야 한다. 필요없다면 0을 넣는다.
DWORD* pFaceRemap, // 최적화 되면서 원래의 i번째면이 어디로 이동했는지 알려주는 면 인덱스를 포함한다. 이 배열은 ID3DXMesh::GetNumFaces()의 크기를 가져야한다.
LPD3DXBUFFER* ppVertexRemap // 최적화 되면서 원래의 i번째 점이 어디로 이동했는지 알려주는 버텍스 인덱스를 포함한다. ID3DXMesh::GetNumVertices() 만큼의 항목을 포함해야 한다.
);
Flags (D3DXMESHOPT_VERTEXCACHE와 D3DXMESHOPT_STRIPREORDER은 함께 사용할 수 없다.)
D3DXMESHOPT_COMPACT 메쉬에서 이용되지 않은 인덱스와 버텍스를 제거한다.
D3DXMESHOPT_ATTRSORT 속성으로 삼각형을 정렬하고 속성 테이블을 생성한다. 이 플래그는 DrawSubset()의 효율을 높여준다.
D3DXMESHOPT_VERTEXCACHE 버텍스 캐시의 히트율을 높인다.
D3DXMESHOPT_STRIPREORDER 삼각형 스트립이 가능한 길어지도록 인덱스를 재구성 한다.
D3DXMESHOPT_IGNOREVERTS 버텍스를 무시하고 인덱스 정보만을 최적화한다.
'예전 > 3D' 카테고리의 다른 글
SetSamplerState (0) | 2013.02.24 |
---|---|
[3D] AABB(Axis Aligned Bounding Box) (0) | 2013.02.21 |
[3D] 수면 파동 (0) | 2013.01.18 |
[3D] 수면을 해보자 (3) | 2013.01.15 |
[3D] Fog (안개) (1) | 2013.01.14 |