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

# ID3D12CommandAllocator::Reset

> Indica que se va a reutilizar la memoria asociada al asignador de comandos.

Indica que se va a reutilizar la memoria asociada al asignador de comandos.

## Sintaxis

```cpp theme={null}
HRESULT Reset(
)
```

### Parámetros

### Valor devuelto

Tipo: HRESULT

Este método devuelve **E\_FAIL** si hay una lista de comandos en grabación activa que hace referencia al asignador de comandos.  La capa de depuración también emitirá un error en este caso.
Consulte los [códigos de retorno de Direct3D 12](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/d3d12-graphics-reference-returnvalues) para conocer otros posibles valores devueltos.

## Comentarios

Las aplicaciones llaman a **Reset** para reutilizar la memoria asociada a un asignador de comandos.  A partir de esta llamada a **Reset**, el entorno de ejecución y el controlador determinan que la unidad de procesamiento gráfico (GPU) ya no está ejecutando ninguna lista de comandos que haya grabado comandos con el asignador de comandos.

A diferencia de [ID3D12GraphicsCommandList::Reset](/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_reset_public), no se recomienda llamar a **Reset** en el asignador de comandos mientras todavía se está ejecutando una lista de comandos.

La capa de depuración emitirá una advertencia si no puede demostrar que no hay referencias pendientes de la GPU a listas de comandos que hayan grabado comandos en el asignador.

La capa de depuración emitirá un error si varios subprocesos llaman a **Reset** de forma simultánea (en el mismo objeto asignador).

#### Ejemplos

El ejemplo [D3D12HelloTriangle](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/working-samples) usa **ID3D12CommandAllocator::Reset** 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}
// 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 el [código de ejemplo de 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

[ID3D12CommandAllocator](/reference/graphics/d3d12_x/interfaces/ID3D12CommandAllocator/id3d12commandallocator)


## Related topics

- [CreateCommandAllocator](/es/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createcommandallocator_public.md)
- [CreateCommandList](/es/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createcommandlist_public.md)
- [D3D12_DRED_ALLOCATION_TYPE](/es/reference/graphics/d3d12/enums/d3d12_dred_allocation_type_public.md)
- [ID3D12CommandSignature](/es/reference/graphics/d3d12/interfaces/id3d12commandsignature/id3d12commandsignature_public.md)
- [D3D12_COMMAND_QUEUE_PRIORITY](/es/reference/graphics/d3d12/enums/d3d12_command_queue_priority_public.md)
