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:
- Derive ID3DXAllocateHierarchy, implementando cada método. Esto controla cómo se asignan y liberan marcos y mallas.
- 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.
- 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.
- 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 |
|
Biblioteca |
|
Consulte también