次の方法で共有


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

要件

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

関連項目

ID3DX10Mesh

D3DX インターフェイス