Partager via


ID3DX10Mesh::D rawSubsetInstanced, méthode

Dessinez plusieurs instances du même sous-ensemble d’un maillage.

Syntaxe

HRESULT DrawSubsetInstanced(
  [in] UINT AttribId,
  [in] UINT InstanceCount,
  [in] UINT StartInstanceLocation
);

Paramètres

AttribId [in]

Type : UINT

Spécifie le sous-ensemble du maillage à dessiner. Cette valeur est utilisée pour différencier les visages d’un maillage comme appartenant à un ou plusieurs groupes d’attributs. Consultez la section Remarques.

InstanceCount [in]

Type : UINT

Nombre d’instances à afficher.

StartInstanceLocation [in]

Type : UINT

Quelle instance commencer à extraire dans chaque mémoire tampon marquée comme instance données.

Valeur retournée

Type : HRESULT

La valeur de retour est l’une des valeurs répertoriées dans Codes de retour Direct3D 10.

Notes

Un maillage contient une table d’attributs. La table d’attributs peut diviser un maillage en sous-ensembles, où chaque sous-ensemble est identifié avec un ID d’attribut. Par exemple, un maillage avec 200 visages, divisé en trois sous-ensembles, peut avoir une table d’attributs qui ressemble à ceci :

Subset Visages
AttribID 0 Visages 0 ~ 50
AttribID 1 Visages 51 ~ 125
AttribID 2 Visages 126 ~ 200

 

L’instanciation peut étendre les performances en réutilisant la même géométrie pour dessiner plusieurs objets dans une scène. Un exemple d’instanciation peut être de dessiner le même objet avec des positions et des couleurs différentes. L’indexation nécessite plusieurs mémoires tampons de vertex : au moins une pour les données par sommet et une deuxième mémoire tampon pour les données par instance.

Le dessin d’instances avec DrawSubsetInstanced est très similaire au processus utilisé avec ID3D10Device::D rawIndexedInstanced décrit dans l’exemple d’instanciation. La principale différence lors de l’utilisation de DrawSubsetInstanced est que les mémoires tampons de vertex et d’index doivent être extraites de l’objet ID3DX10Mesh Interface avant que les données d’instanciation puissent être combinées.

Le code suivant illustre l’extraction des mémoires tampons de vertex et d’index à partir de l’objet de maillage.

      ID3D10Buffer* vertexBuffer;
      pDeviceObj->pMesh->GetDeviceVertexBuffer(0, &vertexBuffer);
      ID3D10Buffer* indexBuffer;
      pDeviceObj->pMesh->GetDeviceIndexBuffer(&indexBuffer);
      

Spécifications

Condition requise Valeur
En-tête
D3DX10.h
Bibliothèque
D3DX10.lib

Voir aussi

ID3DX10Mesh

D3DX Interfaces