读书人

图形学 Direct3D的3D模型处置2 - 邻接

发布时间: 2013-10-27 15:21:49 作者: rapoo

图形学 Direct3D的3D模型处理2 - 邻接三角形的信息及优化

用法:

DWORD* adjacencyInfo = new DWORD[Mesh->GetNumFaces() * 3];Mesh->GenerateAdjacency(0.001f, adjacencyInfo);

优化:

顶点和索引合理安排可以更加有效的渲染mesh模型。

Direct3D函数:

HRESULT ID3DXMesh::Optimize(    DWORD Flags,    CONST DWORD *pAdjacencyIn,    DWORD *pAdjacencyOut,    DWORD *pFaceRemap,    LPD3DXBUFFER *ppVertexRemap,    LPD3DXMESH *ppOptMesh);
 

应用:

// 读取未优化的mesh信息DWORD* adjacencyInfo = new DWORD[Mesh->GetNumFaces() * 3];Mesh->GenerateAdjacency(0.0f, adjacencyInfo);// 用来保存新的优化了的mesh邻接三角形信息DWORD* optimizedAdjacencyInfo = new DWORD[Mesh->GetNumFaces() * 3];ID3DXMesh* meshOut = 0;//新的mesh模型Mesh->Optimize(D3DXMESH_MANAGED | D3DXMESHOPT_COMPACT |D3DXMESHOPT_ATTRSORT | D3DXMESHOPT_VERTEXCACHE,adjacencyInfo, optimizedAdjacencyInfo, 0, 0, &meshOut);

下面的函数是直接优化原mesh模型:

HRESULT ID3DXMesh::OptimizeInplace(    DWORD Flags,    CONST DWORD *pAdjacencyIn,    DWORD *pAdjacencyOut,    DWORD *pFaceRemap,    LPD3DXBUFFER *ppVertexRemap

这里并没有太多深入其原理。只是讲用法。

Reference:

Direct3D龙书

读书人网 >图形图像

热点推荐