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


Метод IHolographicQuadLayerInterop::AcquireDirect3D12BufferResourceWithTimeout (windows.graphics.holographic.interop.h)

Метод AcquireDirect3D12BufferResourceWithTimeout перемещает владение ресурсом обратного буфера Direct3D 12 с платформы на приложение, ожидая до количества времени, указанного аргументом duration , чтобы ресурс стал доступен. Если приложение уже владеет управлением ресурсом, приобретение по-прежнему считается успешным, и метод возвращается немедленно.

После фиксации ресурса в HolographicFrame путем вызова метода IHolographicQuadLayerUpdateParametersInterop::CommitDirect3D12Resource приложение должно рассмотреть вопрос о том, что управление этим ресурсом будет возвращено системе до тех пор, пока оно не будет повторно задано приложением с помощью AcquireDirect3D12BufferResourceWithTimeout. Система владеет буфером до тех пор, пока он не понадобится для представления четырехуровневого слоя. Чтобы определить, отказался ли система от управления буфером, вызовите Метод AcquireDirect3D12BufferResource или AcquireDirect3D12BufferResourceWithTimeout. Если буфер не может быть получен к тому времени, когда приложение будет готово к отрисовке нового обновления для четырехслойного слоя, необходимо создать новый ресурс и добавить его в очередь буфера или ограничить размер очереди, дождавшись появления буфера.

Этот метод принимает необязательное значение времени ожидания. Если в аргументе duration присутствует ненулевое значение, система ожидает этого количества миллисекундах, чтобы буфер стал доступным. Поведение по умолчанию — не ждать. Если задано нулевое значение времени ожидания и буфер не готов к получению, вызов метода завершается сбоем с кодом ошибки E_NOTREADY.

Синтаксис

HRESULT AcquireDirect3D12BufferResourceWithTimeout(
  ID3D12Resource     *pResourceToAcquire,
  ID3D12CommandQueue *pCommandQueue,
  UINT64             duration
);

Параметры

pResourceToAcquire

Тип: ID3D12Resource*

Ресурс Direct3D 12 для получения. При получении ресурс будет находиться в состоянии D3D12_RESOURCE_STATE_COMMON .

pCommandQueue

Тип: ID3D12CommandQueue*

Очередь команд Direct3D 12, используемая для переноса состояния этого ресурса при его получении для приложения.

duration

Тип: UINT64

Если этот параметр задан, вызов будет ожидать получения буфера в течение этого периода времени. Если время ожидания истекает до получения буфера, метод завершается ошибкой с кодом ошибки E_TIMEOUT. Этот параметр имеет значение 100 наносекунд, аналогично полю TimeSpan.Duration .

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

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

Если значение времени ожидания не указано, если вызывается этот метод и буфер не готов к получению, вызов метода завершится ошибкой с кодом E_NOTREADY.

Требования

   
Минимальная версия клиента Windows 10 версии 2004 (10.0; Сборка 19041)
Минимальная версия сервера Windows Server версии 2004 (10.0; Сборка 19041)
Верхняя часть windows.graphics.holographic.interop.h

См. также раздел

AcquireDirect3D12BufferResource