Compartilhar via


Função D3DXLoadMeshHierarchyFromX

Carrega a primeira hierarquia de quadros de um arquivo .x.

Sintaxe

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

Nome do arquivo [in]

Tipo: LPCTSTR

Ponteiro para uma cadeia de caracteres que especifica o nome do arquivo. Se as configurações do compilador exigirem Unicode, o tipo de dados LPCTSTR será resolvido para LPCWSTR. Caso contrário, o tipo de dados de cadeia de caracteres é resolvido para LPCSTR. Consulte Observações.

MeshOptions [in]

Tipo: DWORD

Combinação de um ou mais sinalizadores da enumeração D3DXMESH que especificam opções de criação para a malha.

pDevice [in]

Tipo: LPDIRECT3DDEVICE9

Ponteiro para uma interface IDirect3DDevice9 , o objeto do dispositivo associado à malha.

pAlloc [in]

Tipo: LPD3DXALLOCATEHIERARCHY

Ponteiro para uma interface ID3DXAllocateHierarchy .

pUserDataLoader [in]

Tipo: LPD3DXLOADUSERDATA

Interface fornecida pelo aplicativo que permite o carregamento de dados do usuário. Consulte ID3DXLoadUserData.

ppFrameHierarchy [out]

Tipo: LPD3DXFRAME*

Retorna um ponteiro para a hierarquia de quadros carregados. Consulte D3DXFRAME.

ppAnimController [out]

Tipo: LPD3DXANIMATIONCONTROLLER*

Retorna um ponteiro para o controlador de animação correspondente à animação no arquivo .x. Isso é criado com faixas e eventos padrão. Consulte ID3DXAnimationController.

Valor retornado

Tipo: HRESULT

Se a função for bem-sucedida, o valor retornado será D3D_OK. Se a função falhar, o valor retornado poderá ser um dos seguintes valores: D3DERR_INVALIDCALL, E_OUTOFMEMORY.

Comentários

A configuração do compilador também determina a versão da função. Se Unicode for definido, a chamada de função será resolvida para D3DXLoadMeshHierarchyFromXW. Caso contrário, a chamada de função será resolvida para D3DXLoadMeshHierarchyFromXA.

Todas as malhas do arquivo serão recolhidas em uma malha de saída. Se o arquivo contiver uma hierarquia de quadros, todas as transformações serão aplicadas à malha.

D3DXLoadMeshHierarchyFromX carrega os dados de animação e a hierarquia de quadros de um arquivo .x. Ele examina o arquivo .x e cria uma hierarquia de quadros e um controlador de animação de acordo com o objeto derivado de ID3DXAllocateHierarchy passado para ele por meio de pAlloc. O carregamento dos dados requer várias etapas da seguinte maneira:

  1. Derivar ID3DXAllocateHierarchy, implementando cada método. Isso controla como quadros e malhas são alocados e liberados.
  2. Derivar ID3DXLoadUserData, implementando cada método. Se o arquivo .x não tiver dados inseridos definidos pelo usuário ou se você não precisar dele, poderá ignorar essa parte.
  3. Crie um objeto da classe ID3DXAllocateHierarchy e, opcionalmente, da classe LoadUserData. Você não precisa chamar nenhum método desses objetos por conta própria.
  4. Chame D3DXLoadMeshHierarchyFromX, passando o objeto ID3DXAllocateHierarchy e o objeto ID3DXLoadUserData (ou NULL) para criar a hierarquia de quadros e o controlador de animação. Todos os conjuntos de animação e quadros são registrados automaticamente no controlador de animação.

Durante a carga, CreateFrame e LoadFrameChildData são chamados novamente em cada quadro para controlar o carregamento e a alocação do quadro. O aplicativo define esses métodos para controlar como os quadros são armazenados. CreateMeshContainer e LoadMeshChildData são chamados novamente em cada objeto de malha para controlar o carregamento e a alocação de objetos de malha. LoadTopLevelData é chamado de volta para cada objeto de nível superior que não é carregado pelos outros métodos.

Para liberar esses dados, chame ID3DXAnimationController::Release para liberar os conjuntos de animação e D3DXFRAMEDestroy, passando o nó raiz da hierarquia de quadros e um objeto da classe ID3DXAllocateHierarchy derivada. DestroyFrame e DestroyMeshContainer serão chamados para cada objeto de quadro e malha na hierarquia de quadros. Sua implementação do DestroyFrame deve liberar tudo alocado por CreateFrame e, da mesma forma, para os métodos de contêiner de malha.

Requisitos

Requisito Valor
parâmetro
D3dx9anim.h
Biblioteca
D3dx9.lib

Confira também

Funções de animação