|
我的怎么成这样了??
如图 请问这是怎么回事啊??
哪里计算错了吗??
HRESULT ML::CSkinnedMesh::calBoundingBox(
D3DXFRAME *pFrame, D3DXVECTOR3 *pVMin,D3DXVECTOR3 *pVMax )
{
if( !pFrame ) return S_OK;
static LPVOID pV;
static LPD3DXMESH pXMesh;
static D3DXVECTOR3 vMin,vMax;
static D3DXVECTOR3 vTransFormed;
D3DXMESHCONTAINER *pExXMeshContainer = pFrame->pMeshContainer;
while(pExXMeshContainer)
{
pXMesh = pExXMeshContainer->MeshData.pMesh;
pXMesh->LockVertexBuffer(0,&pV);
D3DXComputeBoundingBox(
(LPD3DXVECTOR3)pV, pXMesh->GetNumVertices(),
D3DXGetFVFVertexSize(pXMesh->GetFVF()), &vMin, &vMax );
if( vMin.x < pVMin->x ) pVMin->x = vMin.x;
if( vMin.y < pVMin->y ) pVMin->y = vMin.y;
if( vMin.z < pVMin->z ) pVMin->z = vMin.z;
if( vMax.x > pVMax->x ) pVMax->x = vMax.x;
if( vMax.y > pVMax->y ) pVMax->y = vMax.y;
if( vMax.z > pVMax->z ) pVMax->z = vMax.z;
pXMesh->UnlockVertexBuffer();
pExXMeshContainer = pExXMeshContainer->pNextMeshContainer;
}
calBoundingBox( pFrame->pFrameSibling,pVMin,pVMax );
calBoundingBox( pFrame->pFrameFirstChild,pVMin,pVMax );
return S_OK;
} |
|