Поделиться через


Метод ID3D12Device8::CreateCommittedResource2 (d3d12.h)

Создает как ресурс, так и неявную кучу (необязательно для защищенного сеанса), чтобы куча была достаточно большой, чтобы содержать весь ресурс, и ресурс сопоставляется с кучей. См. также ID3D12Device::CreateCommittedResource для примера кода.

Синтаксис

HRESULT CreateCommittedResource2(
  const D3D12_HEAP_PROPERTIES    *pHeapProperties,
  D3D12_HEAP_FLAGS               HeapFlags,
  const D3D12_RESOURCE_DESC1     *pDesc,
  D3D12_RESOURCE_STATES          InitialResourceState,
  const D3D12_CLEAR_VALUE        *pOptimizedClearValue,
  ID3D12ProtectedResourceSession *pProtectedSession,
  REFIID                         riidResource,
  void                           **ppvResource
);

Параметры

pHeapProperties

Тип: _In_ const D3D12_HEAP_PROPERTIES*

Указатель на структуру D3D12_HEAP_PROPERTIES, которая предоставляет свойства кучи ресурса.

HeapFlags

Тип: D3D12_HEAP_FLAGS

Параметры кучи, как побитовое сочетание констант перечисления D3D12_HEAP_FLAGS.

pDesc

Тип: const D3D12_RESOURCE_DESC1*

Указатель на структуру D3D12_RESOURCE_DESC1, описывающую ресурс, включая регион MIP.

InitialResourceState

Тип: D3D12_RESOURCE_STATES

Начальное состояние ресурса в виде побитовой комбинации констант перечисления D3D12_RESOURCE_STATES.

При создании ресурса вместе с кучей D3D12_HEAP_TYPE_UPLOAD необходимо задать значение InitialResourceState для D3D12_RESOURCE_STATE_GENERIC_READ.

При создании ресурса вместе с кучей D3D12_HEAP_TYPE_READBACK необходимо задать для InitialResourceState значение D3D12_RESOURCE_STATE_COPY_DEST.

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.

pProtectedSession

Тип: ID3D12ProtectedResourceSession*

Необязательный указатель на объект, представляющий сеанс для защиты содержимого. Если этот сеанс указан, этот сеанс указывает, что ресурс должен быть защищен. Вы можете получить ID3D12ProtectedResourceSession, вызвав ID3D12Device4::CreateProtectedResourceSession.

riidResource

Тип: REFIID

Ссылка на глобальный уникальный идентификатор (GUID) интерфейса ресурса, возвращаемого в ppvResource.

Хотя riidResource чаще всего является GUIDID3D12Resource, это может быть GUID любого интерфейса. Если объект ресурса не поддерживает интерфейс для этого GUID, создание завершается сбоем с E_NOINTERFACE.

ppvResource

Тип: void**

Необязательный указатель на блок памяти, который получает запрошенный указатель интерфейса на созданный объект ресурса.

ppvResource можно nullptr, чтобы включить тестирование возможностей. Если ppvResource nullptr, объект не создается и S_FALSE возвращается, когда pDesc.

Возвращаемое значение

Тип: HRESULT

Если функция успешно выполнена, она возвращает S_OK. В противном случае возвращается кодошибки HRESULT.

Возвращаемое значение Описание
E_OUTOFMEMORY Для создания ресурса недостаточно памяти.

См. коды возврата Direct3D 12 для других возможных возвращаемых значений.

Замечания

Этот метод создает как ресурс, так и кучу, чтобы куча была достаточно большой, чтобы содержать весь ресурс, и ресурс сопоставляется с кучей. Созданная куча называется неявной кучей, так как объект кучи не может быть получен приложением. Перед выпуском окончательной ссылки на ресурс приложение должно убедиться, что GPU больше не будет читать и не записывать в этот ресурс.

Неявная куча создается для доступа к GPU перед возвратом метода в приложение. См. также резиденции.

Не удается изменить сопоставление виртуальных процессоров GPU ресурсов. См. раздел ID3D12CommandQueue::UpdateTileMappings и ресурсов с плитками томов.

Этот метод может вызываться несколькими потоками одновременно.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Сборка Windows 10 20348
минимальный поддерживаемый сервер Сборка Windows 10 20348
заголовка d3d12.h
библиотеки d3d12.lib
DLL d3d12.dll

См. также