Metodo ID3DX10Mesh::D rawSubsetInstanced

Disegnare diverse istanze dello stesso subset di una mesh.

Sintassi

HRESULT DrawSubsetInstanced(
  [in] UINT AttribId,
  [in] UINT InstanceCount,
  [in] UINT StartInstanceLocation
);

Parametri

AttribId [in]

Tipo: UINT

Specifica quale subset della mesh da disegnare. Questo valore viene usato per distinguere i visi in una mesh come appartenente a uno o più gruppi di attributi. Vedere la sezione Osservazioni.

InstanceCount [in]

Tipo: UINT

Numero di istanze da eseguire per il rendering.

StartInstanceLocation [in]

Tipo: UINT

Istanza da cui avviare il recupero da in ogni buffer contrassegnato come dati dell'istanza.

Valore restituito

Tipo: HRESULT

Il valore restituito è uno dei valori elencati in Codici restituiti Direct3D 10.

Commenti

Una mesh contiene una tabella di attributi. La tabella degli attributi può dividere una mesh in subset, in cui ogni subset viene identificato con un ID attributo. Ad esempio, una mesh con 200 visi, suddivisa in tre subset, potrebbe avere una tabella di attributi simile al seguente:

Subset Smile
AttribID 0 Visi da 0 ~ 50
AttribID 1 Visi 51 ~ 125
AttribID 2 Visi 126 ~ 200

 

L'instancing può estendere le prestazioni riutilizzando la stessa geometria per disegnare più oggetti in una scena. Un esempio di instancing potrebbe essere quello di disegnare lo stesso oggetto con posizioni e colori diversi. L'indicizzazione richiede più buffer dei vertici: almeno uno per i dati del vertice e un secondo buffer per i dati per istanza.

Le istanze di disegno con DrawSubsetInstanced sono molto simili al processo usato con ID3D10Device::D rawIndexedInstanced descritto in Instancing Sample. La differenza chiave quando si usa DrawSubsetInstanced è che i vertici e i buffer di indice devono essere estratti dall'oggetto ID3DX10Mesh Interface prima che sia possibile combinare i dati instancing.

Il codice seguente illustra l'estrazione del vertice e dei buffer di indice dall'oggetto mesh.

      ID3D10Buffer* vertexBuffer;
      pDeviceObj->pMesh->GetDeviceVertexBuffer(0, &vertexBuffer);
      ID3D10Buffer* indexBuffer;
      pDeviceObj->pMesh->GetDeviceIndexBuffer(&indexBuffer);
      

Requisiti

Requisito Valore
Intestazione
D3DX10.h
Libreria
D3DX10.lib

Vedi anche

ID3DX10Mesh

Interfacce D3DX