D3DXSplitMesh 関数

メッシュを、指定したサイズより小さいメッシュに分割します。

構文

void D3DXSplitMesh(
  _In_        LPD3DXMESH   pMeshIn,
  _In_  const DWORD        *pAdjacencyIn,
  _In_  const DWORD        MaxSize,
  _In_  const DWORD        Options,
  _Out_       DWORD        *pMeshesOut,
  _Out_       LPD3DXBUFFER *ppMeshArrayOut,
  _Out_       LPD3DXBUFFER *ppAdjacencyArrayOut,
  _Out_       LPD3DXBUFFER *ppFaceRemapArrayOut,
  _Out_       LPD3DXBUFFER *ppVertRemapArrayOut
);

パラメーター

pMeshIn [in]

種類: LPD3DXMESH

ソース メッシュを表す ID3DXMesh インターフェイスへのポインター。

pAdjacencyIn [in]

型: const DWORD*

簡略化するメッシュ内の各面の 3 つの近傍を指定する、1 つの面に 3 つの DWORD の配列へのポインター。

MaxSize [in]

型: const DWORD

結果のメッシュ内の頂点の最大数。

オプション [入力]

型: const DWORD

新しいメッシュのオプション フラグ。

pMeshesOut [out]

型: DWORD*

返されるメッシュの数。

ppMeshArrayOut [out]

種類: LPD3DXBUFFER*

新しいメッシュの ID3DXMesh インターフェイスの配列を含むバッファー。 n 個のメッシュに分割されたソース メッシュの場合、 ppMeshArrayOut は n 個の ID3DXMesh ポインターの配列です。

ppAdjacencyArrayOut [out]

種類: LPD3DXBUFFER*

新しいメッシュの隣接配列 (DWORD) の配列を含むバッファー。 「ID3DXBuffer」を参照してください。 このパラメーターは省略可能です。

ppFaceRemapArrayOut [out]

種類: LPD3DXBUFFER*

新しいメッシュの顔再マップ配列 (DWORD) の配列を含むバッファー。 「ID3DXBuffer」を参照してください。 このパラメーターは省略可能です。

ppVertRemapArrayOut [out]

種類: LPD3DXBUFFER*

新しいメッシュの頂点再マップ配列の配列を含むバッファー。 「ID3DXBuffer」を参照してください。 このパラメーターは省略できます。

戻り値

関数が成功した場合、戻り値はD3D_OK。 関数が失敗した場合、戻り値には、D3DERR_INVALIDCALL、D3DXERR_INVALIDDATA、E_OUTOFMEMORYのいずれかの値を指定できます。

解説

この関数の一般的な用途は、32 ビット インデックス (頂点が 65535 を超える) を持つメッシュを複数のメッシュに分割し、それぞれが 16 ビット インデックスを持つメッシュに分割することです。

隣接配列、頂点再マップ配列、および顔再マップ配列は DWORD であり、各配列には n 個の DWORD ポインターが含まれており、その後にポインターによって参照される DWORD データが続きます。 たとえば、メッシュ 2 で顔 3 の顔の再マップ情報を取得するには、顔の再マップ データが ppFaceRemapArrayOut という名前の変数で返されたと仮定して、次のコードを使用できます。

   
const DWORD **face_remaps = 
    static_cast<DWORD **>(ppFaceRemapArrayOut->GetBufferPointer());
const DWORD remap = face_remaps[2][3];

要件

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

関連項目

メッシュ関数