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

> Crea un recurso y un montón implícito, de modo que el montón sea lo suficientemente grande como para contener todo el recurso, y el recurso quede asignado al montón.

Crea un recurso y un montón implícito, de modo que el montón sea lo suficientemente grande como para contener todo el recurso, y el recurso quede asignado al montón.

## Sintaxis

```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 \*

Un puntero a una estructura **D3D12\_HEAP\_PROPERTIES** que proporciona las propiedades del montón del recurso.

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

Opciones del montón, como una combinación mediante OR bit a bit de constantes de la enumeración **D3D12\_HEAP\_FLAGS**.

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

Un puntero a una estructura **D3D12\_RESOURCE\_DESC** que describe el recurso.

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

El estado inicial del recurso, como una combinación mediante OR bit a bit de constantes de la enumeración **D3D12\_RESOURCE\_STATES**.

Cuando cree un recurso junto con un montón [D3D12\_HEAP\_TYPE\_UPLOAD](/reference/graphics/d3d12/enums/d3d12_heap_type_public), debe establecer *InitialResourceState* en [D3D12\_RESOURCE\_STATE\_GENERIC\_READ](/reference/graphics/d3d12_x/enums/d3d12_resource_states).

Cuando cree un recurso junto con un montón [D3D12\_HEAP\_TYPE\_READBACK](/reference/graphics/d3d12/enums/d3d12_heap_type_public), debe establecer *InitialResourceState* en [D3D12\_RESOURCE\_STATE\_COPY\_DEST](/reference/graphics/d3d12_x/enums/d3d12_resource_states).

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

Especifica una estructura **D3D12\_CLEAR\_VALUE** que describe el valor predeterminado de un color de borrado.

*pOptimizedClearValue* especifica un valor para el que las operaciones de borrado resultan más óptimas. Cuando el recurso creado es una textura con las marcas [D3D12\_RESOURCE\_FLAG\_ALLOW\_RENDER\_TARGET](/reference/graphics/d3d12_x/enums/d3d12_resource_flags) o **D3D12\_RESOURCE\_FLAG\_ALLOW\_DEPTH\_STENCIL**, debe elegir el valor con el que se llamará más habitualmente a la operación de borrado. Puede llamar a la operación de borrado con otros valores, pero esas operaciones no serán tan eficaces como cuando el valor coincide con el que se pasó al crear el recurso.

Cuando use [D3D12\_RESOURCE\_DIMENSION\_BUFFER](/reference/graphics/d3d12_x/enums/d3d12_resource_dimension), debe establecer *pOptimizedClearValue* en `nullptr`.

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

Una referencia al identificador único global (**GUID**) de la interfaz de recurso que se va a devolver en *ppvResource*.

Aunque *riidResource* suele ser el **GUID** de [ID3D12Resource](/reference/graphics/d3d12_xs/interfaces/ID3D12Resource/id3d12resource_xs), puede ser el **GUID** de cualquier interfaz. Si el objeto de recurso no admite la interfaz de este **GUID**, la creación produce un error **E\_NOINTERFACE**.

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

Un puntero opcional a un bloque de memoria que recibe el puntero de interfaz solicitado al objeto de recurso creado.

*ppvResource* puede ser `nullptr` para habilitar las pruebas de funcionalidades. Cuando *ppvResource* es `nullptr`, no se crea ningún objeto y se devuelve **S\_FALSE** cuando *pDesc* es válido.

### Valor devuelto

Tipo: HRESULT

Si la función se ejecuta correctamente, devuelve **S\_OK**. De lo contrario, devuelve un [código de error](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 devuelto | Descripción                                      |
| -------------- | ------------------------------------------------ |
| E\_OUTOFMEMORY | No hay memoria suficiente para crear el recurso. |

Consulte [códigos de retorno de Direct3D 12](https://learn.microsoft.com/en-us/windows/win32/direct3d12/d3d12-graphics-reference-returnvalues) para conocer otros valores devueltos posibles.

## Comentarios

Este método crea un recurso y un montón, de modo que el montón sea lo suficientemente grande como para contener todo el recurso, y el recurso quede asignado al montón. El montón creado se conoce como montón implícito, porque la aplicación no puede obtener el objeto del montón. Antes de liberar la referencia final del recurso, su aplicación debe asegurarse de que la GPU ya no leerá ni escribirá en este recurso.

El montón implícito se hace residente para el acceso de la GPU antes de que el método devuelva el control a su aplicación. Consulte también [Residencia](https://learn.microsoft.com/en-us/windows/win32/direct3d12/residency).

La asignación de VA de GPU del recurso no se puede cambiar. Consulte [ID3D12CommandQueue::UpdateTileMappings](/reference/graphics/d3d12/interfaces/id3d12commandqueue/methods/id3d12commandqueue_updatetilemappings_public) y [Recursos en mosaico de volumen](https://learn.microsoft.com/en-us/windows/win32/direct3d12/volume-tiled-resources).

Varios subprocesos pueden llamar a este método simultáneamente.

## Ejemplos

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

Cree un búfer 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 el [código de ejemplo en la referencia de Direct3D 12](https://learn.microsoft.com/en-us/windows/win32/direct3d12/notes-on-example-code).

## Requisitos

**Encabezado:** d3d12\_xs.h o d3d12\_x.h<br />**Biblioteca:** d3d12\_xs.lib o d3d12\_x.lib<br />**Plataformas compatibles**: consolas XBOX Series y familia XBOX One

## Consulte también

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

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

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

[ID3D12Device](/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

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