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


Метод ID3D11On12Device2::UnwrapUnderlyingResource (d3d11on12.h)

Распаковывает объект ресурса Direct3D 11 и извлекает его как объект ресурса Direct3D 12.

Синтаксис

HRESULT UnwrapUnderlyingResource(
  [in]  ID3D11Resource     *pResource11,
  [in]  ID3D12CommandQueue *pCommandQueue,
  [in]  REFIID             riid,
  [out] void               **ppvResource12
);

Параметры

[in] pResource11

Тип: ID3D11Resource*

Объект ресурса Direct3D 11 для распаковки.

[in] pCommandQueue

Тип: ID3D12CommandQueue*

Очередь команд, в которой приложение планирует использовать ресурс. Любая ожидающая работа, доступ к ресурсу, приводит к тому, что ожидания забора будут запланированы в этой очереди. Затем вы можете продолжить работу с этой очередью, включая сигнал на заборе, принадлежащей вызывающей стороне.

[in] riid

Тип: REFIID

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

[out] ppvResource12

Тип: void**

Указатель на блок памяти, который получает указатель на ресурс Direct3D 12.

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

Тип: HRESULT

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

Замечания

Ресурс переходит в D3D12_RESOURCE_STATE_COMMON (если он еще не был в этом состоянии), а соответствующие ожидания вставляются в очередь команд (pCommandQueue).

Существуют некоторые ограничения на то, что можно распаковать: нет ключевых ресурсов мьютекса, ресурсов, совместимых с GDI, и буферов нет. Однако можно использовать UnwrapUnderlyingResource для распаковки ресурсов, созданных с помощью метода ID3D11On12Device::CreateWrappedResource, а также ресурсов, созданных с помощью ID3D11Device::CreateTexture2D.

Как правило, необходимо вернуть объект в Direct3D11on12, прежде чем снова использовать его в Direct3D 11 (см. ID3D11On12Device2::ReturnUnderlyingResource).

Вы также можете использовать UnwrapUnderlyingResource для отмены буфера цепочки буферов. Необходимо также вернуть ресурс в Direct3D11on12, прежде чем вызывать Present (или иным образом использовать ресурс).

Разблокировка ресурса проверяет ресурс на уровне перевода Direct3D11On12. Вы не можете запланировать использование слоя перевода (через любую версию API), пока ресурс извлечен. Проверьте обратное подключение ресурса (также известное как возврате ресурса) с помощью ID3D11On12Device2::ReturnUnderlyingResource.

UnwrapUnderlyingResource не очищает и может запланировать работу GPU. После вызова UnwrapUnderlyingResource, если вы ожидаете завершения.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10 версии 2004 (10.0; Сборка 19041)
минимальный поддерживаемый сервер Windows Server версии 2004 (10.0; Сборка 19041)
заголовка d3d11on12.h
библиотеки D3D11.lib
DLL D3D11.dll

См. также