> ## 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

> Dibuja primitivas no indexadas y con instancias.

Dibuja primitivas no indexadas y con instancias.

## Sintaxis

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

### Parámetros

*VertexCountPerInstance \[in]*\
Tipo: UINT

Número de vértices que se van a dibujar.

*InstanceCount \[in]*\
Tipo: UINT

Número de instancias que se van a dibujar.

*StartVertexLocation \[in]*\
Tipo: UINT

Índice del primer vértice.

*StartInstanceLocation \[in]*\
Tipo: UINT

Un valor que se suma a cada índice antes de leer los datos por instancia de un búfer de vértices.

### Valor devuelto

Tipo: void

Ninguno.

## Comentarios

Una API de dibujo envía trabajo a la canalización de representación.

La creación de instancias puede mejorar el rendimiento al reutilizar la misma geometría para dibujar varios objetos en una escena. Un ejemplo de creación de instancias podría ser
dibujar el mismo objeto con distintas posiciones y colores.

Los datos de vértices de una llamada de dibujo con instancias normalmente proceden de un búfer de vértices enlazado a la canalización.
Pero también puede proporcionar los datos de vértices desde un sombreador que tenga datos con instancias identificados con una semántica de valor de sistema (SV\_InstanceID).

#### Ejemplos

El ejemplo [D3D12HelloTriangle](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/working-samples) usa **ID3D12GraphicsCommandList::DrawInstanced** de la siguiente manera:

```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());
}

```

Consulte [Código de ejemplo en la referencia de D3D12](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/notes-on-example-code).

<div class="code" />

## Requisitos

**Encabezado:** d3d12\_xs.h o d3d12\_x.h\
**Biblioteca:** d3d12\_xs.lib o d3d12\_x.lib\
**Plataformas compatibles**: consolas XBOX Series y familia XBOX One

## Consulte también

[ID3D12GraphicsCommandList](/reference/graphics/d3d12_xs/interfaces/ID3D12GraphicsCommandList/id3d12graphicscommandlist_xs)


## Related topics

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