プログレッシブスキンメッシュの生成に数日間行き詰まり、最適化に問題はありませんが、頂点の数が変わると、vertexBufferにも位置があり、SkinInfoを新しい位置で更新するための解決策を見つけることができません。私はそれを試しました:
D3D::Mesh m;
meshData->pMesh->CloneMesh(D3DXMESH_MANAGED, Declaration, D3D::getDevice(), &m);
LPD3DXBUFFER vRemap=0;
D3D::checkError("Failed to optimise mesh",
m->Optimize(D3DXMESH_MANAGED | D3DXMESHOPT_VERTEXCACHE | D3DXMESHOPT_ATTRSORT,
newMeshContainer->pAdjacency,newMeshContainer->pAdjacency,
0,&vRemap,&m));
if (pSkinInfo) {
D3D::checkError("Failed to remap skin info",
pSkinInfo->Remap( m->GetNumVertices(),
(DWORD*)vRemap->GetBufferPointer()));
}
D3DXCleanMesh(D3DXCLEAN_SIMPLIFICATION, m, newMeshContainer->pAdjacency, &m, newMeshContainer->pAdjacency, NULL);
D3D::ProgressiveMesh ProgMesh;
D3D::checkError("Failed to generate progressive mesh",
D3DXGeneratePMesh(m, newMeshContainer->pAdjacency, 0, 0, 0, D3DXMESHSIMP_FACE, &ProgMesh));
ProgMesh->SetNumVertices(ProgMesh->GetMaxVertices());
ProgMesh->CloneMesh(D3DXMESH_MANAGED, 0, D3D::getDevice(), &newMeshContainer->MeshData.pMesh);
誰かがそれを行う方法を知っていますか?インターネットでそれに関する情報を見つけられませんでした。それは自動的に行われると言う人もいますが、それは私にはうまくいきません...
私の悪い英語でごめんなさい...