Share via


Método ID3DX10Mesh::D rawSubsetInstanced

Desenhe várias instâncias do mesmo subconjunto de uma malha.

Sintaxe

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

Parâmetros

AttribId [in]

Tipo: UINT

Especifica qual subconjunto da malha a ser desenhada. Esse valor é usado para diferenciar rostos em uma malha como pertencentes a um ou mais grupos de atributos. Consulte Observações.

InstanceCount [in]

Tipo: UINT

Número de instâncias a serem renderizadas.

StartInstanceLocation [in]

Tipo: UINT

Qual instância para começar a buscar em cada buffer marcado como dados de instância.

Valor retornado

Tipo: HRESULT

O valor retornado é um dos valores listados em Códigos de Retorno do Direct3D 10.

Comentários

Uma malha contém uma tabela de atributos. A tabela de atributos pode dividir uma malha em subconjuntos, em que cada subconjunto é identificado com uma ID de atributo. Por exemplo, uma malha com 200 faces, dividida em três subconjuntos, pode ter uma tabela de atributos semelhante a esta:

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

 

A instanciação pode estender o desempenho reutilizando a mesma geometria para desenhar vários objetos em uma cena. Um exemplo de instanciação pode ser desenhar o mesmo objeto com diferentes posições e cores. A indexação requer vários buffers de vértice: pelo menos um para dados por vértice e um segundo buffer para dados por instância.

As instâncias de desenho com DrawSubsetInstanced são muito semelhantes ao processo usado com ID3D10Device::D rawIndexedInstanced descrito em Exemplo de Instancamento. A principal diferença ao usar DrawSubsetInstanced é que os buffers de vértice e índice devem ser extraídos do objeto interface ID3DX10Mesh antes que os dados de instanciação possam ser combinados.

O código a seguir ilustra a extração dos buffers de vértice e índice do objeto de malha.

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

Requisitos

Requisito Valor
parâmetro
D3DX10.h
Biblioteca
D3DX10.lib

Confira também

ID3DX10Mesh

D3DX Interfaces