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 类的对象。 将为每个帧 层次结构中的每个帧和网格对象调用 DestroyFrame 和 DestroyMeshContainerDestroyFrame 的实现应释放 CreateFrame 分配的所有内容,同样应释放网格容器方法。

要求

要求
标头
D3dx9anim.h

D3dx9.lib

另请参阅

动画函数