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 |
|
Libreria |
|
Vedi anche