次の方法で共有


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
);

パラメーター

Filename [in]

種類: LPCTSTR

ファイル名を指定する文字列へのポインター。 コンパイラ設定で Unicode が必要な場合、データ型 LPCTSTR は LPCWSTR に解決されます。 それ以外の場合、文字列データ型は LPCSTR に解決されます。 「解説」を参照してください。

MeshOptions [in]

型: DWORD

メッシュの作成オプションを指定する D3DXMESH 列挙からの 1 つ以上のフラグの組み合わせ。

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 に解決されます。

ファイル内のすべてのメッシュは、1 つの出力メッシュに折りたたまれます。 ファイルにフレーム階層が含まれている場合、すべての変換がメッシュに適用されます。

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 クラスのオブジェクトを渡します。 DestroyFrameDestroyMeshContainer はそれぞれ、フレーム階層内のすべてのフレームオブジェクトとメッシュ オブジェクトに対して呼び出されます。 DestroyFrame の実装では、CreateFrame によって割り当てられたものすべて、同様にメッシュ コンテナー メソッドに対して解放する必要があります。

要件

要件
ヘッダー
D3dx9anim.h
ライブラリ
D3dx9.lib

関連項目

アニメーション関数