Método ID3D12Device::CreateCommittedResource (d3d12.h)
Crea un recurso y un montón implícito, de modo que el montón es lo suficientemente grande como para contener todo el recurso y el recurso se asigna al montón.
Sintaxis
HRESULT CreateCommittedResource(
[in] const D3D12_HEAP_PROPERTIES *pHeapProperties,
[in] D3D12_HEAP_FLAGS HeapFlags,
[in] const D3D12_RESOURCE_DESC *pDesc,
[in] D3D12_RESOURCE_STATES InitialResourceState,
[in, optional] const D3D12_CLEAR_VALUE *pOptimizedClearValue,
[in] REFIID riidResource,
[out, optional] void **ppvResource
);
Parámetros
[in] pHeapProperties
Tipo: const D3D12_HEAP_PROPERTIES*
Puntero a una estructura de D3D12_HEAP_PROPERTIES que proporciona propiedades para el montón del recurso.
[in] HeapFlags
Tipo: D3D12_HEAP_FLAGS
Opciones del montón, como una combinación bit a bit or'd de D3D12_HEAP_FLAGS constantes de enumeración.
[in] pDesc
Tipo: const D3D12_RESOURCE_DESC*
Puntero a una estructura D3D12_RESOURCE_DESC que describe el recurso.
[in] InitialResourceState
Tipo: D3D12_RESOURCE_STATES
Estado inicial del recurso, como una combinación bit a bit-OR de D3D12_RESOURCE_STATES constantes de enumeración.
Al crear un recurso junto con un montón de D3D12_HEAP_TYPE_UPLOAD, debe establecer InitialResourceState en D3D12_RESOURCE_STATE_GENERIC_READ.
Al crear un recurso junto con un montón de D3D12_HEAP_TYPE_READBACK, debe establecer InitialResourceState en D3D12_RESOURCE_STATE_COPY_DEST.
[in, optional] pOptimizedClearValue
Tipo: D3D12_CLEAR_VALUE* const
Especifica una estructura D3D12_CLEAR_VALUE que describe el valor predeterminado de un color claro.
pOptimizedClearValue especifica un valor para el que las operaciones claras son más óptimas. Cuando el recurso creado es una textura con las marcas D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET o D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL, debe elegir el valor con el que se llamará a la operación clear. Puede llamar a la operación clear con otros valores, pero esas operaciones no serán tan eficaces como cuando el valor coincide con el pasado a la creación de recursos.
Al usar D3D12_RESOURCE_DIMENSION_BUFFER, debe establecer pOptimizedClearValue en nullptr
.
[in] riidResource
Tipo: REFIID
Referencia al identificador único global (GUID) de la interfaz de recursos que se va a devolver en ppvResource.
Aunque
[out, optional] ppvResource
Tipo:
Puntero opcional a un bloque de memoria que recibe el puntero de interfaz solicitado al objeto de recurso creado.
ppvResource se puede nullptr
, para habilitar las pruebas de funcionalidad. Cuando ppvResource es nullptr
, no se crea ningún objeto y se devuelve S_FALSE cuando pDesc es válido.
Valor devuelto
Si la función se ejecuta correctamente, devuelve S_OK. De lo contrario, devuelve un código de error HRESULT.
Valor devuelto | Descripción |
---|---|
E_OUTOFMEMORY | No hay memoria suficiente para crear el recurso. |
Consulte códigos de retorno de Direct3D 12 para ver otros valores devueltos posibles.
Observaciones
Este método crea un recurso y un montón, de modo que el montón es lo suficientemente grande como para contener todo el recurso y el recurso se asigna al montón. El montón creado se conoce como montón implícito, ya que la aplicación no puede obtener el objeto de montón. Antes de liberar la referencia final en el recurso, la aplicación debe asegurarse de que la GPU ya no leerá ni escribirá en este recurso.
El montón implícito se convierte en residente para el acceso de GPU antes de que el método devuelva el control a la aplicación. Consulte también residencia.
No se puede cambiar la asignación de VA de GPU de recursos. Vea ID3D12CommandQueue::UpdateTileMappings y Recursos en mosaico de volumen.
Varios subprocesos pueden llamar a este método simultáneamente.
Ejemplos
El ejemplo
Cree un búfer de vértices.
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 código de ejemplo en la referencia de Direct3D 12.
Requisitos
Requisito | Valor |
---|---|
de la plataforma de destino de |
Windows |
encabezado de |
d3d12.h |
biblioteca de |
D3D12.lib |
DLL de |
D3D12.dll |