Метод ID3D12Device4::CreateCommittedResource1 (d3d12.h)
Создает как ресурс, так и неявную кучу (при необходимости для защищенного сеанса), чтобы куча была достаточно большой и содержала весь ресурс, а ресурс сопоставляется с кучей. Пример кода также см. в разделе ID3D12Device::CreateCommittedResource .
Синтаксис
HRESULT CreateCommittedResource1(
[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, optional] ID3D12ProtectedResourceSession *pProtectedSession,
[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.
При создании ресурса вместе с кучей D3D12_HEAP_TYPE_READBACK необходимо задать для Параметра InitialResourceStateзначение D3D12_RESOURCE_STATE_COPY_DEST.
[in, optional] pOptimizedClearValue
Тип: const D3D12_CLEAR_VALUE*
Задает структуру D3D12_CLEAR_VALUE , которая описывает значение по умолчанию для прозрачного цвета.
pOptimizedClearValue указывает значение, для которого наиболее оптимальными являются операции очистки. Если созданный ресурс является текстурой с флагами D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET или D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL , следует выбрать значение, с которым чаще всего будет вызываться операция очистки. Операцию очистки можно вызвать с другими значениями, но эти операции не будут столь эффективными, как если бы значение совпадало со значением, переданным при создании ресурса.
При использовании D3D12_RESOURCE_DIMENSION_BUFFER необходимо задать для параметра pOptimizedClearValue значение nullptr
.
[in, optional] pProtectedSession
Тип: ID3D12ProtectedResourceSession*
Необязательный указатель на объект , представляющий сеанс для защиты содержимого. Если этот сеанс указан, этот сеанс указывает, что ресурс должен быть защищен. Id3D12ProtectedResourceSession можно получить, вызвав ID3D12Device4::CreateProtectedResourceSession.
[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. В противном случае возвращается код ошибкиHRESULT.
Возвращаемое значение | Описание |
---|---|
E_OUTOFMEMORY | Недостаточно памяти для создания ресурса. |
Другие возможные возвращаемые значения см. в разделе Коды возврата Direct3D 12 .
Комментарии
Этот метод создает как ресурс, так и кучу, чтобы куча была достаточно большой, чтобы содержать весь ресурс, а ресурс сопоставляется с кучей. Созданная куча называется неявной кучей, так как объект кучи не может быть получен приложением. Перед выпуском окончательной ссылки на ресурс приложение должно убедиться, что GPU больше не будет выполнять чтение и запись в этот ресурс.
Неявная куча становится резидентной для доступа к GPU, прежде чем метод вернет управление в приложение. См. также раздел Место жительства.
Невозможно изменить сопоставление ресурсов GPU VA. См . раздел ID3D12CommandQueue::UpdateTileMappings и ресурсы с плитками тома.
Этот метод может вызываться несколькими потоками одновременно.
Требования
Минимальная версия клиента | Windows 10 сборки 20348 |
Минимальная версия сервера | Windows 10 сборки 20348 |
Целевая платформа | Windows |
Header | d3d12.h |
Библиотека | d3d12.lib |
DLL | d3d12.dll |