|
声明如下
class CAllocateHierarchy:public ID3DXAllocateHierarchy
{
public:
STDMETHOD(CreateFrame)(THIS_ LPCTSTR Name,LPD3DXFRAME *ppNewFrame);
STDMETHOD(CreateMeshContainer)( THIS_ LPCSTR Name,
CONST D3DXMESHDATA *pMeshData,
CONST D3DXMATERIAL *pMaterials,//材质指针
CONST D3DXEFFECTINSTANCE *pEffectInstances,//效果
DWORD NumMaterials,//材质数
CONST DWORD *pAdjacency,//邻接信息
LPD3DXSKININFO pSkinInfo,//蒙皮信息
LPD3DXMESHCONTAINER *ppNewMeshContainer
);
STDMETHOD(DestroyFrame)(THIS_ LPD3DXFRAME pFrameToFree);
STDMETHOD(DestroyMeshContainer)(THIS_ LPD3DXMESHCONTAINER pMeshContainerBase);
CAllocateHierarchy(CSkinMesh *pSkinMesh) :m_pSkinMesh(pSkinMesh) {}
CSkinMesh* m_pSkinMesh;
//处理网格数据的类,调用该类的一个方法生成蒙皮
};
并且对 声明的几个方法进行了实现
HRESULT CAllocateHierarchy::CreateFrame(LPCTSTR Name,LPD3DXFRAME *ppNewFrame)
{
HRESULT hr=S_OK;
D3DXFRAME_DERIVED *pFrame;
*ppNewFrame=NULL;
pFrame=new D3DXFRAME_DERIVED;
if(pFrame==NULL)
{
hr=E_OUTOFMEMORY;
goto e_Exit;
}
hr=AllocateName(Name,(LPTSTR *)&pFrame->Name);
if(FAILED(hr))
goto e_Exit;
//初始化帧的数据
D3DXMatrixIdentity(&pFrame->TransformationMatrix);
D3DXMatrixIdentity(&pFrame->CombinedTransformationMatrix);
pFrame->pMeshContainer = NULL;
pFrame->pFrameSibling = NULL;
pFrame->pFrameFirstChild = NULL;
*ppNewFrame = pFrame;
pFrame = NULL;
e_Exit:
delete pFrame;
return hr;
}
这里只写一个了 其他的几个也分别有
问题出在调用的时候
CAllocateHierarchy Alloc(this);
D3DXFrameDestroy(m_pFrameRoot,&Alloc);
在别的类中调用这2步的时候 因为CAllocateHierarchy中方法声明是抽象的
发生 抽象类不能实例化 的错误 请问要怎么改 才可以呢????
|
|