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

> Indique de réutiliser la mémoire associée à l'allocateur de commandes.

Indique de réutiliser la mémoire associée à l'allocateur de commandes.

## Syntaxe

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

### Paramètres

### Valeur de retour

Type : HRESULT

Cette méthode retourne **E\_FAIL** si une liste de commandes en cours d'enregistrement référence l'allocateur de commandes. La couche de débogage émet également une erreur dans ce cas.
Consultez [Codes de retour Direct3D 12](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/d3d12-graphics-reference-returnvalues) pour les autres valeurs de retour possibles.

## Remarques

Les applications appellent **Reset** pour réutiliser la mémoire associée à un allocateur de commandes. À partir de cet appel à **Reset**, le runtime et le pilote déterminent que l'unité de traitement graphique (GPU) n'exécute plus aucune liste de commandes ayant enregistré des commandes avec l'allocateur de commandes.

Contrairement à [ID3D12GraphicsCommandList::Reset](/fr/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_reset_public), il n'est pas recommandé d'appeler **Reset** sur l'allocateur de commandes pendant qu'une liste de commandes est encore en cours d'exécution.

La couche de débogage émet un avertissement si elle ne peut pas prouver qu'il n'existe aucune référence GPU en attente vers des listes de commandes ayant enregistré des commandes dans l'allocateur.

La couche de débogage émet une erreur si **Reset** est appelée simultanément par plusieurs threads (sur le même objet allocateur).

#### Exemples

L'exemple [D3D12HelloTriangle](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/working-samples) utilise **ID3D12CommandAllocator::Reset** comme suit :

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

```

Consultez l'[exemple de code dans la référence D3D12](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/notes-on-example-code).

<div class="code" />

## Configuration requise

**En-tête :** d3d12\_xs.h ou d3d12\_x.h\
**Bibliothèque :** d3d12\_xs.lib ou d3d12\_x.lib\
**Plateformes prises en charge** : consoles XBOX Series et famille XBOX One

## Voir aussi

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


## Related topics

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