SDK メッシュ ファイル形式の概要
免責事項 : DXUT メッシュ形式 (.sdkmesh) は製品版のタイトルに推奨されるファイル形式ではありません。この形式は、SDK サンプルの特定の要求に合わせて設計されています。実際のアプリケーションでは、アプリケーションの特定の要求を満たす形式を優先し、このファイル形式の使用は避けてください。 |
SDK メッシュ ファイル形式の概要
サンプルで使用されている SDK メッシュ形式は、メッシュ データを SDK サンプルやチュートリアル アプリケーションへ簡単に取り込めるようにすることのみを目的に作成されたバイナリ形式です。このため、この形式はとても単純な形式で、ほとんどのゲーム開発者のニーズを満たすことはできません。
このファイルは複数の固定サイズの構造体で構成され、これらの構造体は、構造体に関連付けることができる任意の可変サイズのデータに対するオフセットを含んでいます。たとえば、メイン ファイル ヘッダーには、ファイルに格納されているマテリアル数のほかに、ファイルの先頭から最初のマテリアルまでのオフセットが含まれています。
ファイル レイアウト
メッシュ ファイル形式は次のようにレイアウトされます。
SDK メッシュ形式には、2 つのデータのメイン セクションがあります。
静的データ
バッファー データ
静的データ
静的データはファイルの先頭にあります。このデータは、ファイル ヘッダー全体の情報を含んでおり、他に頂点バッファー、インデックス バッファー、メッシュ、サブセット、フレーム、およびマテリアル情報を含んでいます。メッシュ クラスは、これらすべての情報をデータの 1 つの大きなかたまりとしてメモリーに読み込み、読み込み時間を削減するためにデータのさまざまな部分への内部ポインターを設定します。この方法では、技術的には必須の情報よりも多くの情報をメモリーに読み込むことができます。実際のアプリケーションでは、不要な情報がメモリーに読み込まれないようにするために、ファイル形式がアプリケーションの要求を完全に満たしている必要があります。
SDK サンプルの場合、次の順序でデータをレイアウトするのが最適でした。
メイン ファイル ヘッダー
VB ごとの頂点バッファー記述構造体
この構造体は実際の頂点データへのオフセットを含んでいます。
頂点バッファーはメッシュ間で共有できます。
IB ごとのインデックス バッファー記述構造体
この構造体は実際のインデックス データに対するオフセットを含んでいます。
インデックス バッファーはメッシュ間で共有できます。
ファイル内のメッシュごとのメッシュ構造体
この構造体は、一連の頂点バッファーへの参照および 1 つのインデックス バッファーへの参照を含んでいます。
この構造体はサブセット インデックスのリストに対するオフセットを含んでいます。
この構造体は、フレーム/ボーンの影響のリストに対するオフセットを含んでいます。
ファイル内のサブセットごとのサブセット構造体
- サブセットはこの形式内のメッシュ間で共有できます。
フレームの階層リスト
マテリアルのリスト
サブセット インデックス データ :メッシュ構造体によりポイントされます。
影響インデックス データ :メッシュ構造体によりポイントされます。
バッファー データ
このファイルの残りの情報は、頂点データおよびインデックス データです。DXUt のメッシュ クラスでは、このバッファー データはメモリーに読み込まれ、頂点およびインデックス バッファー作成呼び出しにより消費されてから破棄されます。
補足的なアニメーション ファイル形式
SD メッシュ形式に加え、一部のサンプルは補足的なアニメーション ファイル形式も使用してアニメーション データを読み込みます。この形式のレイアウトは単純で、ヘッダーの後に、メッシュ ファイルのフレームと一致するフレームの参照のリストが続きます。各フレームの参照は、キー フレームのリストに対するオフセットを含んでいます。サンプルの目的上、すべてのフレームの参照は同じ数のキー フレームを持っています。