ID3DX10Mesh::D rawSubsetInstanced メソッド
メッシュの同じサブセットの複数のインスタンスを描画します。
構文
HRESULT DrawSubsetInstanced(
[in] UINT AttribId,
[in] UINT InstanceCount,
[in] UINT StartInstanceLocation
);
パラメーター
-
AttribId [in]
-
型: UINT
描画するメッシュのサブセットを指定します。 この値は、メッシュ内の面を 1 つ以上のアトリビュート グループに属するものとして区別するために使用されます。 「解説」を参照してください。
-
InstanceCount [in]
-
型: UINT
レンダリングするインスタンスの数。
-
StartInstanceLocation [in]
-
型: UINT
インスタンス データとしてマークされた各バッファー内のからフェッチを開始するインスタンス。
戻り値
種類: HRESULT
戻り値は、 Direct3D 10 リターン コードに記載されている値のいずれかです。
注釈
メッシュには属性テーブルが含まれています。 属性テーブルでは、メッシュをサブセットに分割できます。各サブセットは属性 ID で識別されます。 たとえば、3 つのサブセットに分割された 200 個の面を持つメッシュには、次のような属性テーブルが含まれる場合があります。
Subset | 顔 |
---|---|
AttribID 0 | 顔 0 ~ 50 |
AttribID 1 | 顔 51 ~ 125 |
AttribID 2 | 顔 126 ~ 200 |
インスタンス化では、同じジオメトリを再利用してシーン内に複数のオブジェクトを描画することで、パフォーマンスが拡張される場合があります。 インスタンス化の 1 つの例として、同じオブジェクトを異なる位置と色で描画できます。 インデックス作成には複数の頂点バッファーが必要です。頂点ごとのデータには少なくとも 1 つ、インスタンスごとのデータには 2 つ目のバッファーが必要です。
DrawSubsetInstanced を使用した描画インスタンスは、「インスタンス化サンプル」で説明されている ID3D10Device::D rawIndexedInstanced で使用されるプロセスとよく似ています。 DrawSubsetInstanced を使用する場合の主な違いは、インスタンス化データを結合する前に、頂点バッファーとインデックス バッファーを ID3DX10Mesh Interface オブジェクトから抽出する必要がある点です。
次のコードは、メッシュ オブジェクトから頂点バッファーとインデックス バッファーを抽出する方法を示しています。
ID3D10Buffer* vertexBuffer;
pDeviceObj->pMesh->GetDeviceVertexBuffer(0, &vertexBuffer);
ID3D10Buffer* indexBuffer;
pDeviceObj->pMesh->GetDeviceIndexBuffer(&indexBuffer);
要件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|
関連項目