D3DXLoadMeshHierarchyFromX
-
Hallo,
ich versuche momentan mit der Funktion D3DXLoadMeshHierarchyFromX benutzerdefinierte Daten aus einer X-Datei zu laden.
Dazu habe ich folgendes getan:class CLoadUserData: public ID3DXLoadUserData{
public:
STDMETHOD(LoadFrameChildData)(THIS_ LPD3DXFRAME pFrame, LPD3DXFILEDATA pXofChildData);
STDMETHOD(LoadMeshChildData)(THIS_ LPD3DXMESHCONTAINER pMeshContainer, LPD3DXFILEDATA pXofChildData);
STDMETHOD(LoadTopLevelData)(THIS_ LPD3DXFILEDATA pXofChildData);CLoadUserData(){}
};Das Problem ist nun, ich drehe mich im Kreis. Ich weiß nicht, wie ich in der Methode LoadTopLevelData, die auch aufgerufen wird während des Parsens, an die Informationen rankomme.
HRESULT CLoadUserData::LoadTopLevelData(LPD3DXFILEDATA pXofChildData){
hr=pXofChildData->GetId(&pId);
if(FAILED(hr)) return hr;hr = pXofChildData->GetType(&type);
if(FAILED(hr)) return hr;hr=pXofChildData->GetName(NULL, &cchName);
if(FAILED(hr)) return hr;hr=pXofChildData->Lock(&dwSize, (LPCVOID*)&pData);
if(FAILED(hr)) return hr;// Daten auslesen
MorphAnimationSet set = ((MorphAnimationSet)pData);
// Um das zu casten, muss ich einen passenden Konstruktor anbieten und da die Daten auslesen. Das ist nur ein Versuch, der nicht funktioniert hat.
hr = pXofChildData->Unlock();
if(FAILED(hr)) return hr;return hr;
}Mein Problem ist, dass egal was ich mache ich am Ende immer wieder ein Objekt von ID3DXFileData habe und wieder am Anfang stehe.
Über die Methode GetEnum bekommt man ja auch das ID3DXFile. Da gibt es aber nur Funktionen zum Registrieren von Templates, ich will die aber doch auslesen, die im X-File gespeichert sind.
Kann mir jemand sagen wie das funktioniert? Vielleicht muss ich meine Templates ja auch erst innerhalb der Anwendung registrieren, aber dann weiß ich trotzdem nicht viel weiter.
Gruß, Michael