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

# DrawIndexedInstanced

> Dibuja primitivas indexadas y con instancias.

Dibuja primitivas indexadas y con instancias.

## Sintaxis

```cpp theme={null}
void DrawIndexedInstanced(
    UINT IndexCountPerInstance,
    UINT InstanceCount,
    UINT StartIndexLocation,
    INT BaseVertexLocation,
    UINT StartInstanceLocation
)
```

### Parámetros

*IndexCountPerInstance \[in]*\
Tipo: UINT

Número de índices leídos del búfer de índices para cada instancia.

*InstanceCount \[in]*\
Tipo: UINT

Número de instancias que se van a dibujar.

*StartIndexLocation \[in]*\
Tipo: UINT

La ubicación del primer índice que la GPU lee del búfer de índices.

*BaseVertexLocation \[in]*\
Tipo: INT

Un valor que se suma a cada índice antes de leer un vértice del búfer de vértices.

*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. La creación de instancias requiere varios búferes de vértices: al menos uno para los datos por vértice
y un segundo búfer para los datos por instancia.

#### Ejemplos

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

```cpp theme={null}
void FrameResource::PopulateCommandList(ID3D12GraphicsCommandList* pCommandList, ID3D12PipelineState* pPso1, ID3D12PipelineState* pPso2,
UINT frameResourceIndex, UINT numIndices, D3D12_INDEX_BUFFER_VIEW* pIndexBufferViewDesc, D3D12_VERTEX_BUFFER_VIEW* pVertexBufferViewDesc,
ID3D12DescriptorHeap* pCbvSrvDescriptorHeap, UINT cbvSrvDescriptorSize, ID3D12DescriptorHeap* pSamplerDescriptorHeap, ID3D12RootSignature* pRootSignature)
{
// If the root signature matches the root signature of the caller, then
// bindings are inherited, otherwise the bind space is reset.
pCommandList->SetGraphicsRootSignature(pRootSignature);

ID3D12DescriptorHeap* ppHeaps[] = { pCbvSrvDescriptorHeap, pSamplerDescriptorHeap };
pCommandList->SetDescriptorHeaps(_countof(ppHeaps), ppHeaps);
pCommandList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST);

pCommandList->IASetIndexBuffer(pIndexBufferViewDesc);

pCommandList->IASetVertexBuffers(0, 1, pVertexBufferViewDesc);

pCommandList->SetGraphicsRootDescriptorTable(0, pCbvSrvDescriptorHeap->GetGPUDescriptorHandleForHeapStart());
pCommandList->SetGraphicsRootDescriptorTable(1, pSamplerDescriptorHeap->GetGPUDescriptorHandleForHeapStart());

// Calculate the descriptor offset due to multiple frame resources.
// 1 SRV + how many CBVs we have currently.
UINT frameResourceDescriptorOffset = 1 + (frameResourceIndex * m_cityRowCount * m_cityColumnCount);
CD3DX12_GPU_DESCRIPTOR_HANDLE cbvSrvHandle(pCbvSrvDescriptorHeap->GetGPUDescriptorHandleForHeapStart(), frameResourceDescriptorOffset, cbvSrvDescriptorSize);

BOOL usePso1 = TRUE;
for (UINT i = 0; i < m_cityRowCount; i++)
{
for (UINT j = 0; j < m_cityColumnCount; j++)
{
// Alternate which PSO to use; the pixel shader is different on
// each just as a PSO setting demonstration.
pCommandList->SetPipelineState(usePso1 ? pPso1 : pPso2);
usePso1 = !usePso1;

// Set this city's CBV table and move to the next descriptor.
pCommandList->SetGraphicsRootDescriptorTable(2, cbvSrvHandle);
cbvSrvHandle.Offset(cbvSrvDescriptorSize);

pCommandList->DrawIndexedInstanced(numIndices, 1, 0, 0, 0);
}
}
}

```

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_INDEXED_ARGUMENTS](/es/reference/graphics/d3d12/structs/d3d12_draw_indexed_arguments_public.md)
- [Directorio de temas NDA: enlaces activos a Microsoft Learn](/es/nda/nda-topic-directory.md)
- [DrawInstanced](/es/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_drawinstanced_public.md)
- [D3D12_DRAW_ARGUMENTS](/es/reference/graphics/d3d12/structs/d3d12_draw_arguments_public.md)
- [XblTournamentGameResult](/es/reference/live/xsapi-c/multiplayer_c/enums/xbltournamentgameresult.md)
