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
D3DX10.h
Bibliothek
D3DX10.lib

Weitere Informationen

ID3DX10Mesh

D3DX-Schnittstellen