Freigeben über


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

Siehe auch

ID3DX10Mesh

D3DX-Schnittstellen