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

# CreateCommittedResource

> Crée à la fois une ressource et un tas implicite, de sorte que le tas soit assez grand pour contenir toute la ressource et que la ressource soit mappée au tas.

Crée à la fois une ressource et un tas implicite, de sorte que le tas soit assez grand pour contenir toute la ressource et que la ressource soit mappée au tas.

## Syntaxe

```cpp theme={null}
HRESULT CreateCommittedResource(
    const D3D12_HEAP_PROPERTIES  pHeapProperties,
    D3D12_HEAP_FLAGS HeapFlags,
    const D3D12_RESOURCE_DESC* pDesc,
    D3D12_RESOURCE_STATES InitialResourceState,
    const D3D12_CLEAR_VALUE  pOptimizedClearValue,
    const IID & riidResource,
    void  ppvResource
)
```

### Paramètres

*pHeapProperties \[in]*<br />Type : const D3D12\_HEAP\_PROPERTIES \*

Un pointeur vers une structure **D3D12\_HEAP\_PROPERTIES** qui fournit les propriétés du tas de la ressource.

*HeapFlags \[in]*<br />Type : D3D12\_HEAP\_FLAGS

Options du tas, sous la forme d'une combinaison par OR au niveau du bit de constantes de l'énumération **D3D12\_HEAP\_FLAGS**.

*pDesc \[in]*<br />Type : **const [D3D12\_RESOURCE\_DESC](/fr-CA/reference/graphics/d3d12/structs/d3d12_resource_desc_public)\***

Un pointeur vers une structure **D3D12\_RESOURCE\_DESC** qui décrit la ressource.

*InitialResourceState \[in]*<br />Type : [**D3D12\_RESOURCE\_STATES**](/fr-CA/reference/graphics/d3d12_x/enums/d3d12_resource_states)

L'état initial de la ressource, sous la forme d'une combinaison par OR au niveau du bit de constantes de l'énumération **D3D12\_RESOURCE\_STATES**.

Lorsque vous créez une ressource avec un tas [D3D12\_HEAP\_TYPE\_UPLOAD](/fr-CA/reference/graphics/d3d12/enums/d3d12_heap_type_public), vous devez définir *InitialResourceState* à [D3D12\_RESOURCE\_STATE\_GENERIC\_READ](/fr-CA/reference/graphics/d3d12_x/enums/d3d12_resource_states).

Lorsque vous créez une ressource avec un tas [D3D12\_HEAP\_TYPE\_READBACK](/fr-CA/reference/graphics/d3d12/enums/d3d12_heap_type_public), vous devez définir *InitialResourceState* à [D3D12\_RESOURCE\_STATE\_COPY\_DEST](/fr-CA/reference/graphics/d3d12_x/enums/d3d12_resource_states).

*pOptimizedClearValue \[in, optional]*<br />Type : const D3D12\_CLEAR\_VALUE \*

Spécifie une structure **D3D12\_CLEAR\_VALUE** qui décrit la valeur par défaut d'une couleur d'effacement.

*pOptimizedClearValue* spécifie une valeur pour laquelle les opérations d'effacement sont les plus optimales. Lorsque la ressource créée est une texture avec l'indicateur [D3D12\_RESOURCE\_FLAG\_ALLOW\_RENDER\_TARGET](/fr-CA/reference/graphics/d3d12_x/enums/d3d12_resource_flags) ou **D3D12\_RESOURCE\_FLAG\_ALLOW\_DEPTH\_STENCIL**, vous devez choisir la valeur avec laquelle l'opération d'effacement sera le plus souvent appelée. Vous pouvez appeler l'opération d'effacement avec d'autres valeurs, mais ces opérations ne seront pas aussi efficaces que lorsque la valeur correspond à celle passée lors de la création de la ressource.

Lorsque vous utilisez [D3D12\_RESOURCE\_DIMENSION\_BUFFER](/fr-CA/reference/graphics/d3d12_x/enums/d3d12_resource_dimension), vous devez définir *pOptimizedClearValue* à `nullptr`.

*riidResource \[in]*<br />Type : const IID &

Une référence à l'identificateur global unique (**GUID**) de l'interface de ressource à retourner dans *ppvResource*.

Bien que *riidResource* soit le plus souvent le **GUID** de [ID3D12Resource](/fr-CA/reference/graphics/d3d12_xs/interfaces/ID3D12Resource/id3d12resource_xs), il peut s'agir du **GUID** de n'importe quelle interface. Si l'objet ressource ne prend pas en charge l'interface correspondant à ce **GUID**, la création échoue avec **E\_NOINTERFACE**.

*ppvResource \[out, optional]*<br />Type : void \*\*

Un pointeur facultatif vers un bloc de mémoire qui reçoit le pointeur d'interface demandé vers l'objet ressource créé.

*ppvResource* peut être `nullptr`, pour permettre le test des capacités. Lorsque *ppvResource* est `nullptr`, aucun objet n'est créé et **S\_FALSE** est retourné lorsque *pDesc* est valide.

### Valeur de retour

Type : HRESULT

Si la fonction réussit, elle retourne **S\_OK**. Sinon, elle retourne un [code d'erreur](https://learn.microsoft.com/en-us/windows/win32/com/com-error-codes-10) [**HRESULT**](https://learn.microsoft.com/en-us/windows/desktop/com/structure-of-com-error-codes).

| Valeur de retour | Description |
| - | - |
| E\_OUTOFMEMORY | La mémoire est insuffisante pour créer la ressource. |

Consultez les [codes de retour Direct3D 12](https://learn.microsoft.com/en-us/windows/win32/direct3d12/d3d12-graphics-reference-returnvalues) pour connaître les autres valeurs de retour possibles.

## Remarques

Cette méthode crée à la fois une ressource et un tas, de sorte que le tas soit assez grand pour contenir toute la ressource et que la ressource soit mappée au tas. Le tas créé est appelé tas implicite, car l'objet tas ne peut pas être obtenu par l'application. Avant de libérer la dernière référence à la ressource, votre application doit s'assurer que le GPU ne lira plus et n'écrira plus dans cette ressource.

Le tas implicite est rendu résident pour l'accès par le GPU avant que la méthode ne rende le contrôle à votre application. Consultez également [Résidence](https://learn.microsoft.com/en-us/windows/win32/direct3d12/residency).

Le mappage d'adresse virtuelle GPU de la ressource ne peut pas être modifié. Consultez [ID3D12CommandQueue::UpdateTileMappings](/fr-CA/reference/graphics/d3d12/interfaces/id3d12commandqueue/methods/id3d12commandqueue_updatetilemappings_public) et [Ressources en mosaïque de volume](https://learn.microsoft.com/en-us/windows/win32/direct3d12/volume-tiled-resources).

Cette méthode peut être appelée simultanément par plusieurs threads.

## Exemples

L'exemple [D3D12Bundles](https://learn.microsoft.com/en-us/windows/win32/direct3d12/working-samples) utilise **ID3D12Device::CreateCommittedResource** comme suit :

Créez une mémoire tampon de vertex.

```cpp theme={null}
auto heapProperties = CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT);
auto resourceDesc = CD3DX12_RESOURCE_DESC::Buffer(SampleAssets::VertexDataSize);
ThrowIfFailed(m_device->CreateCommittedResource(
&heapProperties,
D3D12_HEAP_FLAG_NONE,
&resourceDesc,
D3D12_RESOURCE_STATE_COPY_DEST,
nullptr,
IID_PPV_ARGS(&m_vertexBuffer)));
```

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

## Configuration requise

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

## Voir aussi

[CreatePlacedResource](/fr-CA/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createplacedresource_public)

[CreateReservedResource](/fr-CA/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createreservedresource_public)

[D3D12\_HEAP\_FLAGS](/fr-CA/reference/graphics/d3d12_x/enums/d3d12_heap_flags)

[ID3D12Device](/fr-CA/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

- [CreateCommittedResource1 (consoles XBOX Series)](/fr-CA/reference/graphics/d3d12/interfaces/id3d12device4/methods/id3d12device4_createcommittedresource1_public.md)
- [CreateReservedResource](/fr-CA/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createreservedresource_public.md)
- [CreatePlacedResource](/fr-CA/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createplacedresource_public.md)
- [CreateReservedResource2 (consoles XBOX Series)](/fr-CA/reference/graphics/d3d12/interfaces/id3d12device10/methods/id3d12device10_createreservedresource2_public.md)
- [CreatePlacedResource2 (consoles XBOX Series)](/fr-CA/reference/graphics/d3d12/interfaces/id3d12device10/methods/id3d12device10_createplacedresource2_public.md)
