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 aufgelöst. Andernfalls wird der Zeichenfolgendatentyp in LPCSTR aufgelöst. Siehe Hinweise.
-
MeshOptions [in]
-
Typ: DWORD
Kombination eines oder mehrerer Flags aus der D3DXMESH-Enumeration , die Erstellungsoptionen für das Gitter angeben.
-
pDevice [in]
-
Typ: LPDIRECT3DDEVICE9
Zeiger auf eine IDirect3DDevice9-Schnittstelle , das dem Gitter 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. Siehe 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, wird der Rückgabewert D3D_OK. Wenn die Funktion fehlschlägt, kann der Rückgabewert einer der folgenden Werte sein: D3DERR_INVALIDCALL, E_OUTOFMEMORY.
Bemerkungen
Die Compilereinstellung bestimmt auch die Funktionsversion. Wenn Unicode definiert ist, wird der Funktionsaufruf in D3DXLoadMeshHierarchyFromXW aufgelöst. Andernfalls wird der Funktionsaufruf in D3DXLoadMeshHierarchyFromXA aufgelöst.
Alle Gitter in der Datei werden in ein Ausgabegitter reduziert. Wenn die Datei eine Framehierarchie enthält, werden alle Transformationen auf das Gitter angewendet.
D3DXLoadMeshHierarchyFromX lädt die Animationsdaten und die Framehierarchie aus einer X-Datei. Es überprüft die X-Datei und erstellt eine Framehierarchie und einen Animationscontroller gemäß dem id3DXAllocateHierarchy-abgeleiteten Objekt, das über pAlloc an sie übergeben wird. Das Laden der Daten erfordert mehrere Schritte wie folgt:
- Id3DXAllocateHierarchy ableiten, wobei jede Methode implementiert wird. Dadurch wird gesteuert, wie Frames und Gitter zugeordnet und freigegeben werden.
- Leiten Sie ID3DXLoadUserData ab, und implementieren Sie die einzelnen Methoden. 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 der ID3DXAllocateHierarchy-Klasse und optional der 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 Ladevorgangs werden CreateFrame und LoadFrameChildData für jeden Frame wieder aufgerufen, 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 Gitterobjekt zurückgerufen, um das Laden und Die Zuordnung von Gitterobjekten zu steuern. LoadTopLevelData wird für jedes Objekt der obersten Ebene, das nicht von den anderen Methoden geladen wird, zurückgerufen.
Um diese Daten freizugeben, rufen Sie ID3DXAnimationController::Release auf, um die Animationssätze freizugeben, und D3DXFRAMEDestroy, indem Sie den Stammknoten der Framehierarchie und ein Objekt Ihrer abgeleiteten ID3DXAllocateHierarchy-Klasse übergeben. DestroyFrame und DestroyMeshContainer werden jeweils für jeden Frame und jedes Gitterobjekt in der Framehierarchie aufgerufen. Ihre Implementierung von DestroyFrame sollte alles freigeben, was von CreateFrame zugeordnet ist, und ebenso für die Mesh-Containermethoden.
Anforderungen
Anforderung | Wert |
---|---|
Header |
|
Bibliothek |
|
Siehe auch