D3DXLoadMeshHierarchyFromX-Funktion
Lädt die erste Framehierarchie aus einer X-Datei.
Syntax
HRESULT D3DXLoadMeshHierarchyFromX(
_In_ LPCTSTR Filename,
_In_ DWORD MeshOptions,
_In_ LPDIRECT3DDEVICE9 pDevice,
_In_ LPD3DXALLOCATEHIERARCHY pAlloc,
_In_ LPD3DXLOADUSERDATA pUserDataLoader,
_Out_ LPD3DXFRAME *ppFrameHierarchy,
_Out_ LPD3DXANIMATIONCONTROLLER *ppAnimController
);
Parameter
-
Dateiname [ In]
-
Typ: LPCTSTR
Zeiger auf eine Zeichenfolge, die den Dateinamen angibt. Wenn die Compilereinstellungen Unicode erfordern, wird der Datentyp LPCTSTR in LPCWSTR auflösen. Andernfalls wird der Zeichenfolgendatentyp in LPCSTR auflösen. Siehe Hinweise.
-
MeshOptions [ In]
-
Typ: DWORD
Kombination von mindestens einem Flag aus der D3DXMESH-Enumeration, die Erstellungsoptionen für das Gitternetz angeben.
-
pDevice [ In]
-
Typ: LPDIRECT3DDEVICE9
Zeiger auf eine IDirect3DDevice9-Schnittstelle, das dem Gittermodell zugeordnete Geräteobjekt.
-
pAlloc [ In]
-
Zeiger auf eine ID3DXAllocateHierarchy-Schnittstelle.
-
pUserDataLoader [ In]
-
Typ: LPD3DXLOADUSERDATA
Von der Anwendung bereitgestellte Schnittstelle, die das Laden von Benutzerdaten ermöglicht. Weitere Informationen finden Sie unter ID3DXLoadUserData.
-
ppFrameHierarchy [ out]
-
Typ: LPD3DXFRAME*
Gibt einen Zeiger auf die geladene Framehierarchie zurück. Siehe D3DXFRAME.
-
ppAnimController [ out]
-
Typ: LPD3DXANIMATIONCONTROLLER*
Gibt einen Zeiger auf den Animationscontroller zurück, der der Animation in der X-Datei entspricht. Dies wird mit Standardspuren und -ereignissen erstellt. Siehe ID3DXAnimationController.
Rückgabewert
Typ: HRESULT
Wenn die Funktion erfolgreich ist, ist der Rückgabewert D3D _ OK. Wenn die Funktion fehlschlägt, kann der Rückgabewert einer der folgenden Werte sein: D3DERR _ INVALIDCALL, E _ OUTOFMEMORY.
Hinweise
Die Compilereinstellung bestimmt auch die Funktionsversion. Wenn Unicode definiert ist, wird der Funktionsaufruf in D3DXLoadMeshHierarchyFromXW auflösen. Andernfalls wird der Funktionsaufruf in D3DXLoadMeshHierarchyFromXA auflösen.
Alle Gitternetze in der Datei werden zu einem Ausgabegitternetz reduziert. Wenn die Datei eine Rahmenhierarchie enthält, werden alle Transformationen auf das Gitternetz angewendet.
D3DXLoadMeshHierarchyFromX lädt die Animationsdaten und die Rahmenhierarchie aus einer X-Datei. Sie scannt die X-Datei und erstellt eine Framehierarchie und einen Animationscontroller gemäß dem von ID3DXAllocateHierarchyabgeleiteten Objekt, das über pAlloc an sie übergeben wird. Das Laden der Daten erfordert mehrere Schritte wie folgt:
- Leiten Sie ID3DXAllocateHierarchy ab,und implementieren Sie jede Methode. Dies steuert, wie Frames und Gitternetze zugeordnet und frei werden.
- Leiten Sie ID3DXLoadUserData ab,und implementieren Sie jede Methode. Wenn Ihre X-Datei keine eingebetteten benutzerdefinierten Daten enthält oder Sie sie nicht benötigen, können Sie diesen Teil überspringen.
- Erstellen Sie ein Objekt ihrer ID3DXAllocateHierarchy-Klasse und optional ihrer LoadUserData-Klasse. Sie müssen keine Methoden dieser Objekte selbst aufrufen.
- Rufen Sie D3DXLoadMeshHierarchyFromX auf, und übergeben Sie ihr ID3DXAllocateHierarchy-Objekt und Ihr ID3DXLoadUserData-Objekt (oder NULL), um die Framehierarchie und den Animationscontroller zu erstellen. Alle Animationssätze und Frames werden automatisch beim Animationscontroller registriert.
Während des Ladevorgang werden CreateFrame und LoadFrameChildData auf jedem Frame zurückgebewegt, um das Laden und die Zuordnung des Frames zu steuern. Die Anwendung definiert diese Methoden, um zu steuern, wie Frames gespeichert werden. CreateMeshContainer und LoadMeshChildData werden für jedes Gittermodellobjekt zurückgebewegt, um das Laden und die Zuordnung von Gittermodellobjekten zu steuern. LoadTopLevelData wird für jedes Objekt der obersten Ebene zurückgewendt, das nicht von den anderen Methoden geladen wird.
Um diese Daten frei zu geben, rufen Sie ID3DXAnimationController::Release auf, um die Animationssätze frei zu geben, und D3DXFRAMEDestroy, indem Sie den Stammknoten der Framehierarchie und ein Objekt der abgeleiteten ID3DXAllocateHierarchy-Klasse übergeben. DestroyFrame und DestroyMeshContainer werden jeweils für jeden Frame und jedes Gittermodellobjekt in der Framehierarchie aufgerufen. Ihre Implementierung von DestroyFrame sollte alles, was von CreateFrame zugeordnetwurde, und ebenso für die Mesh-Containermethoden frei geben.
Anforderungen
| Anforderung | Wert |
|---|---|
| Header |
|
| Bibliothek |
|