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]

Typ: LPD3DXALLOCATEHIERARCHY

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:

  1. Id3DXAllocateHierarchy ableiten, wobei jede Methode implementiert wird. Dadurch wird gesteuert, wie Frames und Gitter zugeordnet und freigegeben werden.
  2. 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.
  3. Erstellen Sie ein Objekt der ID3DXAllocateHierarchy-Klasse und optional der LoadUserData-Klasse. Sie müssen keine Methoden dieser Objekte selbst aufrufen.
  4. 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
D3dx9anim.h
Bibliothek
D3dx9.lib

Siehe auch

Animationsfunktionen