Funzione D3DXLoadMeshHierarchyFromX
Carica la prima gerarchia di frame da un file con estensione x.
Sintassi
HRESULT D3DXLoadMeshHierarchyFromX(
_In_ LPCTSTR Filename,
_In_ DWORD MeshOptions,
_In_ LPDIRECT3DDEVICE9 pDevice,
_In_ LPD3DXALLOCATEHIERARCHY pAlloc,
_In_ LPD3DXLOADUSERDATA pUserDataLoader,
_Out_ LPD3DXFRAME *ppFrameHierarchy,
_Out_ LPD3DXANIMATIONCONTROLLER *ppAnimController
);
Parametri
-
Nome file [in]
-
Tipo: LPCTSTR
Puntatore a una stringa che specifica il nome file. Se le impostazioni del compilatore richiedono Unicode, il tipo di dati LPCTSTR viene risolto in LPCWSTR. In caso contrario, il tipo di dati stringa viene risolto in LPCSTR. Vedere la sezione Osservazioni.
-
MeshOptions [in]
-
Tipo: DWORD
Combinazione di uno o più flag dell'enumerazione D3DXMESH che specificano le opzioni di creazione per la mesh.
-
pDevice [in]
-
Tipo: LPDIRECT3DDEVICE9
Puntatore a un'interfaccia IDirect3DDevice9 , l'oggetto dispositivo associato alla mesh.
-
pAlloc [in]
-
Tipo: LPD3DXALLOCATEHIERARCHY
Puntatore a un'interfaccia ID3DXAllocateHierarchy .
-
pUserDataLoader [in]
-
Tipo: LPD3DXLOADUSERDATA
Interfaccia fornita dall'applicazione che consente il caricamento dei dati utente. Vedere ID3DXLoadUserData.
-
ppFrameHierarchy [out]
-
Tipo: LPD3DXFRAME*
Restituisce un puntatore alla gerarchia dei fotogrammi caricata. Vedere D3DXFRAME.
-
ppAnimController [out]
-
Tipo: LPD3DXANIMATIONCONTROLLER*
Restituisce un puntatore al controller di animazione corrispondente all'animazione nel file con estensione x. Viene creato con tracce ed eventi predefiniti. Vedere ID3DXAnimationController.
Valore restituito
Tipo: HRESULT
Se la funzione ha esito positivo, il valore restituito viene D3D_OK. Se la funzione ha esito negativo, il valore restituito può essere uno dei valori seguenti: D3DERR_INVALIDCALL, E_OUTOFMEMORY.
Commenti
L'impostazione del compilatore determina anche la versione della funzione. Se Unicode è definito, la chiamata di funzione viene risolta in D3DXLoadMeshHierarchyFromXW. In caso contrario, la chiamata di funzione viene risolta in D3DXLoadMeshHierarchyFromXA.
Tutte le mesh nel file verranno compresse in un'unica mesh di output. Se il file contiene una gerarchia di frame, tutte le trasformazioni verranno applicate alla mesh.
D3DXLoadMeshHierarchyFromX carica i dati di animazione e la gerarchia dei fotogrammi da un file con estensione x. Analizza il file x e compila una gerarchia di frame e un controller di animazione in base all'oggetto derivato da ID3DXAllocateHierarchy passato tramite pAlloc. Il caricamento dei dati richiede diversi passaggi come indicato di seguito:
- Derivare ID3DXAllocateHierarchy, implementando ogni metodo. In questo modo viene controllato il modo in cui i frame e le mesh vengono allocati e liberati.
- Derivare ID3DXLoadUserData, implementando ogni metodo. Se il file con estensione x non contiene dati incorporati definiti dall'utente o se non è necessario, è possibile ignorare questa parte.
- Creare un oggetto della classe ID3DXAllocateHierarchy e, facoltativamente, della classe LoadUserData. Non è necessario chiamare manualmente alcun metodo di questi oggetti.
- Chiama D3DXLoadMeshHierarchyFromX, passando l'oggetto ID3DXAllocateHierarchy e l'oggetto ID3DXLoadUserData (o NULL) per creare la gerarchia dei fotogrammi e il controller di animazione. Tutti i set e i fotogrammi di animazione vengono registrati automaticamente nel controller di animazione.
Durante il caricamento, CreateFrame e LoadFrameChildData vengono richiamati su ogni frame per controllare il caricamento e l'allocazione del frame. L'applicazione definisce questi metodi per controllare la modalità di archiviazione dei frame. CreateMeshContainer e LoadMeshChildData vengono richiamati su ogni oggetto mesh per controllare il caricamento e l'allocazione di oggetti mesh. LoadTopLevelData viene richiamato per ogni oggetto di primo livello che non viene caricato dagli altri metodi.
Per liberare questi dati, chiama ID3DXAnimationController::Release per liberare i set di animazioni e D3DXFRAMEDestroy, passando il nodo radice della gerarchia dei fotogrammi e un oggetto della classe ID3DXAllocateHierarchy derivata. DestroyFrame e DestroyMeshContainer verranno chiamati per ogni frame e oggetto mesh nella gerarchia dei fotogrammi. L'implementazione di DestroyFrame deve rilasciare tutti gli elementi allocati da CreateFrame e allo stesso modo per i metodi del contenitore mesh.
Requisiti
Requisito | Valore |
---|---|
Intestazione |
|
Libreria |
|
Vedi anche