> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# DrawInstanced

> Desenha primitivos instanciados não indexados.

Desenha primitivos instanciados não indexados.

## Sintaxe

```cpp theme={null}
void DrawInstanced(
    UINT VertexCountPerInstance,
    UINT InstanceCount,
    UINT StartVertexLocation,
    UINT StartInstanceLocation
)
```

### Parâmetros

*VertexCountPerInstance \[in]*\
Tipo: UINT

Número de vértices a serem desenhados.

*InstanceCount \[in]*\
Tipo: UINT

Número de instâncias a serem desenhadas.

*StartVertexLocation \[in]*\
Tipo: UINT

Índice do primeiro vértice.

*StartInstanceLocation \[in]*\
Tipo: UINT

Um valor adicionado a cada índice antes da leitura de dados por instância de um buffer de vértices.

### Valor retornado

Tipo: void

Nenhum.

## Comentários

Uma API de desenho envia trabalho para o pipeline de renderização.

A instanciação pode melhorar o desempenho reutilizando a mesma geometria para desenhar vários objetos em uma cena. Um exemplo de instanciação seria
desenhar o mesmo objeto com posições e cores diferentes.

Os dados de vértice de uma chamada de desenho instanciada normalmente vêm de um buffer de vértices associado ao pipeline.
No entanto, você também pode fornecer os dados de vértice a partir de um sombreador que tenha dados instanciados identificados com uma semântica de valor do sistema (SV\_InstanceID).

#### Exemplos

A amostra [D3D12HelloTriangle](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/working-samples) usa **ID3D12GraphicsCommandList::DrawInstanced** da seguinte maneira:

```cpp theme={null}
D3D12_VIEWPORT m_viewport;
D3D12_RECT m_scissorRect;
ComPtr<IDXGISwapChain3> m_swapChain;
ComPtr<ID3D12Device> m_device;
ComPtr<ID3D12Resource> m_renderTargets[FrameCount];
ComPtr<ID3D12CommandAllocator> m_commandAllocator;
ComPtr<ID3D12CommandQueue> m_commandQueue;
ComPtr<ID3D12RootSignature> m_rootSignature;
ComPtr<ID3D12DescriptorHeap> m_rtvHeap;
ComPtr<ID3D12PipelineState> m_pipelineState;
ComPtr<ID3D12GraphicsCommandList> m_commandList;
UINT m_rtvDescriptorSize;

```

```cpp theme={null}
void D3D12HelloTriangle::PopulateCommandList()
{
// Command list allocators can only be reset when the associated
// command lists have finished execution on the GPU; apps should use
// fences to determine GPU execution progress.
ThrowIfFailed(m_commandAllocator->Reset());

// However, when ExecuteCommandList() is called on a particular command
// list, that command list can then be reset at any time and must be before
// re-recording.
ThrowIfFailed(m_commandList->Reset(m_commandAllocator.Get(), m_pipelineState.Get()));

// Set necessary state.
m_commandList->SetGraphicsRootSignature(m_rootSignature.Get());
m_commandList->RSSetViewports(1, &m_viewport);
m_commandList->RSSetScissorRects(1, &m_scissorRect);

// Indicate that the back buffer will be used as a render target.
m_commandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m_renderTargets[m_frameIndex].Get(), D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET));

CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle(m_rtvHeap->GetCPUDescriptorHandleForHeapStart(), m_frameIndex, m_rtvDescriptorSize);
m_commandList->OMSetRenderTargets(1, &rtvHandle, FALSE, nullptr);

// Record commands.
const float clearColor[] = { 0.0f, 0.2f, 0.4f, 1.0f };
m_commandList->ClearRenderTargetView(rtvHandle, clearColor, 0, nullptr);
m_commandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
m_commandList->IASetVertexBuffers(0, 1, &m_vertexBufferView);
m_commandList->DrawInstanced(3, 1, 0, 0);

// Indicate that the back buffer will now be used to present.
m_commandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m_renderTargets[m_frameIndex].Get(), D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT));

ThrowIfFailed(m_commandList->Close());
}

```

Confira [Código de exemplo na referência do D3D12](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/notes-on-example-code).

<div class="code" />

## Requisitos

**Cabeçalho:** d3d12\_xs.h ou d3d12\_x.h\
**Biblioteca:** d3d12\_xs.lib ou d3d12\_x.lib\
**Plataformas com suporte**: consoles XBOX Series e família XBOX One

## Confira também

[ID3D12GraphicsCommandList](/pt-BR/reference/graphics/d3d12_xs/interfaces/ID3D12GraphicsCommandList/id3d12graphicscommandlist_xs)


## Related topics

- [D3D12_DRAW_ARGUMENTS](/pt-BR/reference/graphics/d3d12/structs/d3d12_draw_arguments_public.md)
- [DrawIndexedInstanced](/pt-BR/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_drawindexedinstanced_public.md)
- [D3D12_DRAW_INDEXED_ARGUMENTS](/pt-BR/reference/graphics/d3d12/structs/d3d12_draw_indexed_arguments_public.md)
- [XblTournamentGameResult](/pt-BR/reference/live/xsapi-c/multiplayer_c/enums/xbltournamentgameresult.md)
- [ID3D12MetaCommand](/pt-BR/reference/graphics/d3d12/interfaces/id3d12metacommand/id3d12metacommand_public.md)
