DX9b 与 DX9c 在x文件解析方面带来的麻烦

DX9b 与 DX9c 在x文件解析方面带来的麻烦IDirectXFile,IDirectXFileData等接口被改为ID3DXFile,ID3DXFileData因此directx高级动画制作中的例子就有很多地方需要改,比如最长遇见的错误【errorC2664:“D3DXLoadMeshFromXof”:不能将参数1从“LPDIRE

大家好,欢迎来到IT知识分享网。DX9b 与 DX9c 在x文件解析方面带来的麻烦

IDirectXFile,IDirectXFileData等接口被改为ID3DXFile,ID3DXFileData

因此 directx高级动画制作  中的例子就有很多地方需要改,比如最长遇见的错误【error C2664: “D3DXLoadMeshFromXof”: 不能将参数1 从“LPDIRECTXFILEDATA”转换为“LPD3DXFILEDATA”与指向的类型无关;转换要求reinterpret_cast、C 样式转换或函数样式转换】

更改前获取xfile

pDXFile->CreateEnumObject((LPVOID)xFileName,DXFILELOAD_FROMFILE,&pEnum);

更改后获取xfile

pDXFile->CreateEnumObject((LPVOID)xFileName,D3DXF_FILELOAD_FROMFILE,&pEnum);

***注意:更改后注册模板的代码一定要在获取xfile之前注册,不然会在getchildren时遇到异常

if(FAILED(pDXFile->RegisterTemplates(
(LPVOID)D3DRM_XTEMPLATES,
D3DRM_XTEMPLATE_BYTES))) {
pDXFile->Release();
return FALSE;
}

pDXFile->CreateEnumObject((LPVOID)xFileName,D3DXF_FILELOAD_FROMFILE,&pEnum);

**********************************************************************

更改前遍历数据

while(SUCCEEDED(hr = pEnum->GetNextDataObject(&pData)))
{

 pData->Release();
}

更改后遍历数据

if(SUCCEEDED(hr = pEnum->GetChildren(&datanum))){
for(SIZE_T i = 0;i<datanum;i++){
if(SUCCEEDED(pEnum->GetChild(i,&pData))){

}

pData->Release();
}
}

 

更改后获取模板类型变为

GUID Type ;
pData->GetType(&Type)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30632.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信