ID3DX10Mesh::D rawSubsetInstanced-Methode
Zeichnen Sie mehrere Instanzen derselben Teilmenge eines Gitters.
Syntax
HRESULT DrawSubsetInstanced(
[in] UINT AttribId,
[in] UINT InstanceCount,
[in] UINT StartInstanceLocation
);
Parameter
-
AttribId [in]
-
Typ: UINT
Gibt an, welche Teilmenge des Gitters gezeichnet werden soll. Dieser Wert wird verwendet, um Gesichter in einem Gitter zu unterscheiden, die zu einer oder mehreren Attributgruppen gehören. Siehe Bemerkungen.
-
InstanceCount [in]
-
Typ: UINT
Anzahl der zu rendernden Instanzen.
-
StartInstanceLocation [in]
-
Typ: UINT
Welche instance in jedem Puffer, der als instance Daten markiert ist, abgerufen werden soll.
Rückgabewert
Typ: HRESULT
Der Rückgabewert ist einer der In Direct3D 10-Rückgabecodes aufgeführten Werte.
Bemerkungen
Ein Gitter enthält eine Attributtabelle. Die Attributtabelle kann ein Gitter in Teilmengen unterteilen, wobei jede Teilmenge mit einer Attribut-ID identifiziert wird. Beispielsweise kann ein Gitter 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 |
Durch das Durchstellen kann die Leistung verbessert werden, indem dieselbe Geometrie wiederverwendet wird, um mehrere Objekte in einer Szene zu zeichnen. Ein Beispiel für die Instanziierung könnte das Zeichnen desselben Objekts mit unterschiedlichen Positionen und Farben sein. Für die Indizierung sind mehrere Vertexpuffer erforderlich: mindestens einen für Daten pro Scheitelpunkt und einen zweiten Puffer für instance Daten.
Das Zeichnen von Instanzen mit DrawSubsetInstanced ähnelt stark dem Prozess, der mit ID3D10Device::D rawIndexedInstanced verwendet wird, der unter Instancing Sample beschrieben wird. Der Hauptunterschied bei Der Verwendung von DrawSubsetInstanced besteht darin, dass Vertex- und Indexpuffer aus dem ID3DX10Mesh Interface-Objekt extrahiert werden müssen, bevor die Instancingdaten kombiniert werden können.
Der folgende Code veranschaulicht das Extrahieren der Vertex- und Indexpuffer aus dem Gitterobjekt.
ID3D10Buffer* vertexBuffer;
pDeviceObj->pMesh->GetDeviceVertexBuffer(0, &vertexBuffer);
ID3D10Buffer* indexBuffer;
pDeviceObj->pMesh->GetDeviceIndexBuffer(&indexBuffer);
Anforderungen
Anforderung | Wert |
---|---|
Header |
|
Bibliothek |
|
Siehe auch