Метод ID3D12Device::CreateCommittedResource (d3d12.h)
Создает как ресурс, так и неявную кучу, так что куча достаточно большая, чтобы содержать весь ресурс, и ресурс сопоставляется с кучей.
Синтаксис
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
);
Параметры
[in] pHeapProperties
Тип: const D3D12_HEAP_PROPERTIES*
Указатель на структуру D3D12_HEAP_PROPERTIES, которая предоставляет свойства кучи ресурса.
[in] HeapFlags
Тип: D3D12_HEAP_FLAGS
Параметры кучи, как побитовое сочетание констант перечисления D3D12_HEAP_FLAGS.
[in] pDesc
Тип: const D3D12_RESOURCE_DESC*
Указатель на структуру D3D12_RESOURCE_DESC, описывающую ресурс.
[in] InitialResourceState
Начальное состояние ресурса в виде побитовой комбинации констант перечисления D3D12_RESOURCE_STATES.
При создании ресурса вместе с кучей D3D12_HEAP_TYPE_UPLOAD необходимо задать значение InitialResourceState для D3D12_RESOURCE_STATE_GENERIC_READ.
При создании ресурса вместе с кучей
[in, optional] pOptimizedClearValue
Тип: константа D3D12_CLEAR_VALUE*
Указывает структуру D3D12_CLEAR_VALUE, описывающую значение по умолчанию для четкого цвета.
pOptimizedClearValue указывает значение, для которого наиболее оптимальные операции очистки. Когда созданный ресурс является текстурой с флагами D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET или D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL, следует выбрать значение, с помощью которого обычно вызывается операция очистки. Вы можете вызвать операцию очистки с другими значениями, но эти операции не будут столь эффективными, как при совпадении значения, переданного в создание ресурса.
При использовании D3D12_RESOURCE_DIMENSION_BUFFERнеобходимо задать для nullptr
значение pOptimizedClearValue.
[in] riidResource
Тип: REFIID
Ссылка на глобальный уникальный идентификатор (GUID) интерфейса ресурса, возвращаемого в ppvResource.
Хотя riidResource чаще всего является GUIDID3D12Resource, это может быть GUID любого интерфейса. Если объект ресурса не поддерживает интерфейс для этого GUID, создание завершается сбоем с E_NOINTERFACE.
[out, optional] ppvResource
Тип: void**
Необязательный указатель на блок памяти, который получает запрошенный указатель интерфейса на созданный объект ресурса.
ppvResource можно nullptr
, чтобы включить тестирование возможностей. Если ppvResource nullptr
, объект не создается и S_FALSE возвращается, когда pDesc.
Возвращаемое значение
Тип: HRESULT
Если функция успешно выполнена, она возвращает S_OK. В противном случае возвращается кодошибки
Возвращаемое значение | Описание |
---|---|
E_OUTOFMEMORY | Для создания ресурса недостаточно памяти. |
См. коды возврата Direct3D 12 для других возможных возвращаемых значений.
Замечания
Этот метод создает как ресурс, так и кучу, чтобы куча была достаточно большой, чтобы содержать весь ресурс, и ресурс сопоставляется с кучей. Созданная куча называется неявной кучей, так как объект кучи не может быть получен приложением. Перед выпуском окончательной ссылки на ресурс приложение должно убедиться, что GPU больше не будет читать и не записывать в этот ресурс.
Неявная куча создается для доступа к GPU перед возвратом метода в приложение. См. также резиденции.
Не удается изменить сопоставление виртуальных процессоров GPU ресурсов. См. раздел ID3D12CommandQueue::UpdateTileMappings и ресурсов с плитками томов.
Этот метод может вызываться несколькими потоками одновременно.
Примеры
В примере D3D12Bundles
Создайте буфер вершин.
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)));
См. пример кода всправочнике Direct3D 12.
Требования
Требование | Ценность |
---|---|
целевая платформа | Виндоус |
заголовка | d3d12.h |
библиотеки |
D3D12.lib |
DLL | D3D12.dll |