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

> Cria um recurso e um heap implícito, de modo que o heap seja grande o suficiente para conter todo o recurso e o recurso seja mapeado para o heap.

Cria um recurso e um heap implícito, de modo que o heap seja grande o suficiente para conter todo o recurso e o recurso seja mapeado para o heap.

## Sintaxe

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

### Parâmetros

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

Um ponteiro para uma estrutura **D3D12\_HEAP\_PROPERTIES** que fornece propriedades para o heap do recurso.

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

Opções do heap, como uma combinação OR bit a bit de constantes da enumeração **D3D12\_HEAP\_FLAGS**.

*pDesc \[in]*<br />Tipo: **const [D3D12\_RESOURCE\_DESC](/pt-BR/reference/graphics/d3d12/structs/d3d12_resource_desc_public)\***

Um ponteiro para uma estrutura **D3D12\_RESOURCE\_DESC** que descreve o recurso.

*InitialResourceState \[in]*<br />Tipo: [**D3D12\_RESOURCE\_STATES**](/pt-BR/reference/graphics/d3d12_x/enums/d3d12_resource_states)

O estado inicial do recurso, como uma combinação OR bit a bit de constantes da enumeração **D3D12\_RESOURCE\_STATES**.

Ao criar um recurso junto com um heap [D3D12\_HEAP\_TYPE\_UPLOAD](/pt-BR/reference/graphics/d3d12/enums/d3d12_heap_type_public), você deve definir *InitialResourceState* como [D3D12\_RESOURCE\_STATE\_GENERIC\_READ](/pt-BR/reference/graphics/d3d12_x/enums/d3d12_resource_states).

Ao criar um recurso junto com um heap [D3D12\_HEAP\_TYPE\_READBACK](/pt-BR/reference/graphics/d3d12/enums/d3d12_heap_type_public), você deve definir *InitialResourceState* como [D3D12\_RESOURCE\_STATE\_COPY\_DEST](/pt-BR/reference/graphics/d3d12_x/enums/d3d12_resource_states).

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

Especifica uma estrutura **D3D12\_CLEAR\_VALUE** que descreve o valor padrão de uma cor de limpeza.

*pOptimizedClearValue* especifica um valor para o qual as operações de limpeza são mais otimizadas. Quando o recurso criado for uma textura com os sinalizadores [D3D12\_RESOURCE\_FLAG\_ALLOW\_RENDER\_TARGET](/pt-BR/reference/graphics/d3d12_x/enums/d3d12_resource_flags) ou **D3D12\_RESOURCE\_FLAG\_ALLOW\_DEPTH\_STENCIL**, você deve escolher o valor com o qual a operação de limpeza será chamada com mais frequência. Você pode chamar a operação de limpeza com outros valores, mas essas operações não serão tão eficientes quanto quando o valor corresponde ao passado na criação do recurso.

Ao usar [D3D12\_RESOURCE\_DIMENSION\_BUFFER](/pt-BR/reference/graphics/d3d12_x/enums/d3d12_resource_dimension), você deve definir *pOptimizedClearValue* como `nullptr`.

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

Uma referência ao identificador global exclusivo (**GUID**) da interface do recurso a ser retornada em *ppvResource*.

Embora *riidResource* seja mais comumente o **GUID** de [ID3D12Resource](/pt-BR/reference/graphics/d3d12_xs/interfaces/ID3D12Resource/id3d12resource_xs), ele pode ser o **GUID** de qualquer interface. Se o objeto de recurso não for compatível com a interface desse **GUID**, a criação falhará com **E\_NOINTERFACE**.

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

Um ponteiro opcional para um bloco de memória que recebe o ponteiro de interface solicitado para o objeto de recurso criado.

*ppvResource* pode ser `nullptr`, para permitir testes de funcionalidade. Quando *ppvResource* é `nullptr`, nenhum objeto é criado e **S\_FALSE** é retornado quando *pDesc* é válido.

### Valor retornado

Tipo: HRESULT

Se a função for bem-sucedida, ela retornará **S\_OK**. Caso contrário, retornará um [código de erro](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).

| Valor retornado | Descrição |
| - | - |
| E\_OUTOFMEMORY | Não há memória suficiente para criar o recurso. |

Consulte [Códigos de retorno do Direct3D 12](https://learn.microsoft.com/en-us/windows/win32/direct3d12/d3d12-graphics-reference-returnvalues) para outros valores retornados possíveis.

## Comentários

Este método cria um recurso e um heap, de modo que o heap seja grande o suficiente para conter todo o recurso e o recurso seja mapeado para o heap. O heap criado é conhecido como heap implícito, pois o objeto heap não pode ser obtido pelo aplicativo. Antes de liberar a referência final do recurso, seu aplicativo deve garantir que a GPU não lerá nem gravará mais nesse recurso.

O heap implícito se torna residente para acesso da GPU antes que o método devolva o controle ao seu aplicativo. Confira também [Residência](https://learn.microsoft.com/en-us/windows/win32/direct3d12/residency).

O mapeamento de VA da GPU do recurso não pode ser alterado. Consulte [ID3D12CommandQueue::UpdateTileMappings](/pt-BR/reference/graphics/d3d12/interfaces/id3d12commandqueue/methods/id3d12commandqueue_updatetilemappings_public) e [Recursos lado a lado de volume](https://learn.microsoft.com/en-us/windows/win32/direct3d12/volume-tiled-resources).

Este método pode ser chamado por vários threads simultaneamente.

## Exemplos

O exemplo [D3D12Bundles](https://learn.microsoft.com/en-us/windows/win32/direct3d12/working-samples) usa **ID3D12Device::CreateCommittedResource** da seguinte maneira:

Crie um buffer de vértices.

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

Consulte o [Código de exemplo na referência do Direct3D 12](https://learn.microsoft.com/en-us/windows/win32/direct3d12/notes-on-example-code).

## Requisitos

**Cabeçalho:** d3d12\_xs.h ou d3d12\_x.h<br />**Biblioteca:** d3d12\_xs.lib ou d3d12\_x.lib<br />**Plataformas compatíveis**: consoles XBOX Series e família XBOX One

## Confira também

[CreatePlacedResource](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createplacedresource_public)

[CreateReservedResource](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createreservedresource_public)

[D3D12\_HEAP\_FLAGS](/pt-BR/reference/graphics/d3d12_x/enums/d3d12_heap_flags)

[ID3D12Device](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

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