|
//这是用DX9.0c改写的剖析类中的代码,问题见注释
BOOL cXParser: arseChildObjects( ID3DXFileData *pDataObj, DWORD Depth, void **Data, BOOL ForceReference)
{
ID3DXFileData *pSubObj = NULL;
SIZE_T num_child;
BOOL ParseResult = TRUE;
pDataObj->GetChildren(&num_child);
for(SIZE_T j = 0; j < num_child; j++)
{
pDataObj->GetChild(j, &pSubObj);
//为什么一定要下面这两句才能正确解析文件,而使用ParseResult = ParseObject(pSubObj,pDataObj,Depth+1, Data,
//pSubObj->IsReference());却会发生解析出错,大牛们,能讲下吗,我输出了subDataObj->IsReference()和reference
//发现他们有些是不同的,难道父对象的类型才是子对象解析的关键????????
if(pSubObj->IsReference()){
ForceReference = true;
}
ParseResult = ParseObject(pSubObj,pDataObj,Depth+1, Data,ForceReference);
XPReleaseCOM(pSubObj);
// Return on parsing failure
if(ParseResult == FALSE)
return FALSE;
}
return TRUE;
} |
|