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];
要件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|
関連項目