共用方式為


D3DXLoadMeshHierarchyFromX 函式

從 .x 檔案載入第一個框架階層。

語法

HRESULT D3DXLoadMeshHierarchyFromX(
  _In_  LPCTSTR                   Filename,
  _In_  DWORD                     MeshOptions,
  _In_  LPDIRECT3DDEVICE9         pDevice,
  _In_  LPD3DXALLOCATEHIERARCHY   pAlloc,
  _In_  LPD3DXLOADUSERDATA        pUserDataLoader,
  _Out_ LPD3DXFRAME               *ppFrameHierarchy,
  _Out_ LPD3DXANIMATIONCONTROLLER *ppAnimController
);

參數

檔案名 [in]

類型: LPCTSTR

指定檔案名的字串指標。 如果編譯器設定需要 Unicode,LPCTSTR 資料類型會解析為 LPCWSTR。 否則,字串資料類型會解析為 LPCSTR。 請參閱<備註>。

MeshOptions [in]

類型: DWORD

D3DXMESH列舉中的一或多個旗標組合,指定網格的建立選項。

pDevice [in]

類型: LPDIRECT3DDEVICE9

IDirect3DDevice9介面的指標,即與網格相關聯的裝置物件。

pAlloc [in]

類型: LPD3DXALLOCATEHIERARCHY

ID3DXAllocateHierarchy介面的指標。

pUserDataLoader [in]

類型: LPD3DXLOADUSERDATA

應用程式提供的介面,允許載入使用者資料。 請參閱 ID3DXLoadUserData

ppFrameHierarchy [out]

類型: LPD3DXFRAME*

傳回已載入框架階層的指標。 請參閱 D3DXFRAME

ppAnimController [out]

類型: LPD3DXANIMATIONCONTROLLER*

傳回對應至 .x 檔案中動畫之動畫控制器的指標。 這是使用預設曲目和事件所建立。 請參閱 ID3DXAnimationController

傳回值

類型: HRESULT

如果函式成功,傳回值會D3D_OK。 如果函式失敗,傳回值可以是下列其中一個值:D3DERR_INVALIDCALL,E_OUTOFMEMORY。

備註

編譯器設定也會決定函式版本。 如果已定義 Unicode,函式呼叫會解析為 D3DXLoadMeshHierarchyFromXW。 否則,函式呼叫會解析為 D3DXLoadMeshHierarchyFromXA。

檔案中的所有網格都會折迭成一個輸出網格。 如果檔案包含框架階層,所有轉換都會套用至網格。

D3DXLoadMeshHierarchyFromX 會從 .x 檔案載入動畫資料和框架階層。 它會掃描 .x 檔案,並根據透過 pAlloc 傳遞至它的 ID3DXAllocateHierarchy衍生物件來建置框架階層和動畫控制器。 載入資料需要數個步驟,如下所示:

  1. 衍生 ID3DXAllocateHierarchy,實作每個方法。 這會控制畫面格和網格的配置和釋放方式。
  2. 衍生 ID3DXLoadUserData,並實作每個方法。 如果您的 .x 檔案沒有內嵌的使用者定義資料,或者您不需要,則可以略過這個部分。
  3. 建立 ID3DXAllocateHierarchy 類別的物件,並選擇性地建立您的 LoadUserData 類別。 您不需要自行呼叫這些物件的任何方法。
  4. 呼叫 D3DXLoadMeshHierarchyFromX,傳入您的 ID3DXAllocateHierarchy 物件和 ID3DXLoadUserData 物件 (或 Null) ,以建立框架階層和動畫控制器。 所有動畫集和畫面都會自動註冊到動畫控制器。

在載入期間,會在每個畫面上回呼 CreateFrame 和LoadFrameChildData,以控制框架的載入和配置。 應用程式會定義這些方法來控制畫面的儲存方式。 CreateMeshContainerLoadMeshChildData 會在每個網格物件上重新呼叫,以控制網格物件的載入和配置。 LoadTopLevelData 會針對其他方法未載入的每個最上層物件呼叫。

若要釋放此資料,請呼叫 ID3DXAnimationController::Release 以釋放動畫集,以及 D3DXFRAMEDestroy,傳入框架階層的根節點和衍生 ID3DXAllocateHierarchy 類別的物件。 DestroyFrameDestroyMeshContainer 會針對框架階層中的每個畫面和網格物件呼叫。 您的 DestroyFrame實作應該釋放CreateFrame所配置的所有專案,同樣地針對網格容器方法。

規格需求

需求
標頭
D3dx9anim.h
程式庫
D3dx9.lib

另請參閱

動畫函式