Compartir a través de


Función D3DXLoadMeshHierarchyFromX

Carga la primera jerarquía de fotogramas desde un archivo .x.

Sintaxis

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

Parámetros

Nombre de archivo [in]

Tipo: LPCTSTR

Puntero a una cadena que especifica el nombre de archivo. Si la configuración del compilador requiere Unicode, el tipo de datos LPCTSTR se resuelve en LPCWSTR. De lo contrario, el tipo de datos de cadena se resuelve en LPCSTR. Vea la sección Comentarios.

MeshOptions [in]

Tipo: DWORD

Combinación de una o varias marcas de la enumeración D3DXMESH que especifican opciones de creación para la malla.

pDevice [in]

Tipo: LPDIRECT3DDEVICE9

Puntero a una interfaz IDirect3DDevice9 , el objeto de dispositivo asociado a la malla.

pAlloc [in]

Tipo: LPD3DXALLOCATEHIERARCHY

Puntero a una interfaz ID3DXAllocateHierarchy .

pUserDataLoader [in]

Tipo: LPD3DXLOADUSERDATA

Interfaz proporcionada por la aplicación que permite cargar datos de usuario. Consulte ID3DXLoadUserData.

ppFrameHierarchy [out]

Tipo: LPD3DXFRAME*

Devuelve un puntero a la jerarquía de fotogramas cargada. Consulte D3DXFRAME.

ppAnimController [out]

Tipo: LPD3DXANIMATIONCONTROLLER*

Devuelve un puntero al controlador de animación correspondiente a la animación en el archivo .x. Esto se crea con seguimientos y eventos predeterminados. Consulta ID3DXAnimationController.

Valor devuelto

Tipo: HRESULT

Si la función se realiza correctamente, el valor devuelto se D3D_OK. Si se produce un error en la función, el valor devuelto puede ser uno de los siguientes valores: D3DERR_INVALIDCALL, E_OUTOFMEMORY.

Comentarios

La configuración del compilador también determina la versión de la función. Si se define Unicode, la llamada de función se resuelve en D3DXLoadMeshHierarchyFromXW. De lo contrario, la llamada de función se resuelve en D3DXLoadMeshHierarchyFromXA.

Todas las mallas del archivo se contraerán en una malla de salida. Si el archivo contiene una jerarquía de marcos, todas las transformaciones se aplicarán a la malla.

D3DXLoadMeshHierarchyFromX carga los datos de animación y la jerarquía de fotogramas de un archivo .x. Examina el archivo .x y crea una jerarquía de fotogramas y un controlador de animación según el objeto derivado de ID3DXAllocateHierarchy pasado a él a través de pAlloc. La carga de los datos requiere varios pasos como se indica a continuación:

  1. Derive ID3DXAllocateHierarchy, implementando cada método. Esto controla cómo se asignan y liberan marcos y mallas.
  2. Derive ID3DXLoadUserData, implementando cada método. Si el archivo .x no tiene datos incrustados definidos por el usuario, o si no lo necesita, puede omitir esta parte.
  3. Cree un objeto de la clase ID3DXAllocateHierarchy y, opcionalmente, de la clase LoadUserData. No es necesario llamar a ningún método de estos objetos usted mismo.
  4. Llame a D3DXLoadMeshHierarchyFromX, pasando el objeto ID3DXAllocateHierarchy y el objeto ID3DXLoadUserData (o NULL) para crear la jerarquía de fotogramas y el controlador de animación. Todos los conjuntos y fotogramas de animación se registran automáticamente en el controlador de animación.

Durante la carga, se vuelve a llamar a CreateFrame y LoadFrameChildData en cada fotograma para controlar la carga y asignación del fotograma. La aplicación define estos métodos para controlar cómo se almacenan los fotogramas. CreateMeshContainer y LoadMeshChildData se llaman de nuevo en cada objeto de malla para controlar la carga y asignación de objetos de malla. LoadTopLevelData se llama de nuevo para cada objeto de nivel superior que los demás métodos no cargan.

Para liberar estos datos, llame a ID3DXAnimationController::Release para liberar los conjuntos de animación y D3DXFRAMEDestroy, pasando el nodo raíz de la jerarquía de fotogramas y un objeto de la clase ID3DXAllocateHierarchy derivada. Se llamará a DestroyFrame y DestroyMeshContainer para cada marco y objeto de malla de la jerarquía de fotogramas. La implementación de DestroyFrame debe liberar todo lo asignado por CreateFrame y, del mismo modo, para los métodos de contenedor de malla.

Requisitos

Requisito Value
Encabezado
D3dx9anim.h
Biblioteca
D3dx9.lib

Consulte también

Funciones de animación