ID3DX10Mesh::D rawSubsetInstanced-Methode
Zeichnen mehrerer Instanzen derselben Teilmenge eines Gitternetzes.
Syntax
HRESULT DrawSubsetInstanced(
[in] UINT AttribId,
[in] UINT InstanceCount,
[in] UINT StartInstanceLocation
);
Parameter
-
AttribId [ In]
-
Typ: UINT
Gibt an, welche Teilmenge des Gitternetzes gezeichnet werden soll. Dieser Wert wird verwendet, um Gesichter in einem Gitternetz als zu einer oder mehreren Attributgruppen gehörend zu unterscheiden. Siehe Bemerkungen.
-
InstanceCount [ In]
-
Typ: UINT
Anzahl der zu rendernden Instanzen.
-
StartInstanceLocation [ In]
-
Typ: UINT
Welche Instanz aus in jedem Puffer abgerufen werden soll, der als Instanzdaten markiert ist.
Rückgabewert
Typ: HRESULT
Der Rückgabewert ist einer der In Direct3D 10-Rückgabecodes aufgeführtenWerte.
Hinweise
Ein Gitternetz enthält eine Attributtabelle. Die Attributtabelle kann ein Gitternetz in Teilmengen unterteilen, wobei jede Teilmenge mit einer Attribut-ID identifiziert wird. Beispielsweise kann ein Gitternetz mit 200 Gesichtern, unterteilt in drei Teilmengen, eine Attributtabelle aufweisen, die wie folgt aussieht:
| Subset | Gesichtserkennung |
|---|---|
| AttribID 0 | Gesichter 0 ~ 50 |
| AttribID 1 | Gesichter 51 ~ 125 |
| AttribID 2 | Gesichter 126 ~ 200 |
Die Instanziierung kann die Leistung erweitern, indem dieselbe Geometrie wiederverwendet wird, um mehrere Objekte in einer Szene zu zeichnen. Ein Beispiel für die Instanziierung ist das Zeichnen desselben Objekts mit unterschiedlichen Positionen und Farben. Für die Indizierung sind mehrere Scheitelpunktpuffer erforderlich: mindestens einer für Daten pro Scheitelpunkt und ein zweiter Puffer für Daten pro Instanz.
Zeichnungsinstanzen mit DrawSubsetInstanced ähneln sehr dem Prozess, der mit ID3D10Device::D rawIndexedInstanced verwendet wird, der im Instanziierungsbeispielbeschrieben ist. Der Hauptunterschied bei der Verwendung von DrawSubsetInstanced besteht darin, dass Scheitelpunkt- und Indexpuffer aus dem ID3DX10Mesh-Schnittstellenobjekt extrahiert werden müssen, bevor die Instanziierungsdaten kombiniert werden können.
Der folgende Code veranschaulicht das Extrahieren der Scheitelpunkt- und Indexpuffer aus dem Gittermodellobjekt.
ID3D10Buffer* vertexBuffer;
pDeviceObj->pMesh->GetDeviceVertexBuffer(0, &vertexBuffer);
ID3D10Buffer* indexBuffer;
pDeviceObj->pMesh->GetDeviceIndexBuffer(&indexBuffer);
Anforderungen
| Anforderung | Wert |
|---|---|
| Header |
|
| Bibliothek |
|