共用方式為


IHolographicQuadLayerInterop::AcquireDirect3D12BufferResourceWithTimeout 方法 (windows.graphics.holographic.interop.h)

AcquireDirect3D12BufferResourceWithTimeout方法會將 Direct3D 12 背景緩衝區資源的擁有權從平臺轉換至您的應用程式,等待到持續時間引數所指出的時間量,讓資源可供使用。 如果您的應用程式已經擁有資源的控制權,則擷取仍視為成功,而且方法會立即傳回。

藉由呼叫IHolographicQuadLayerUpdateParametersInterop::CommitDirect3D12Resource將資源認可至HolographicFrame之後,您的應用程式應該考慮將該資源的控制權撤銷至系統,直到使用AcquireDirect3D12BufferResourceWithTimeout重新取得應用程式時為止。 系統會擁有緩衝區,直到不再需要它才能呈現四層。 若要判斷系統是否具有緩衝區的已放棄控制權,請呼叫 AcquireDirect3D12BufferResourceAcquireDirect3D12BufferResourceWithTimeout。 如果應用程式準備好開始轉譯四層的新更新時無法取得緩衝區,則您應該建立新的資源,並將它新增至緩衝區佇列,或等候緩衝區變成可用來限制佇列大小。

這個方法接受選擇性逾時值。 當 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 錯誤碼 (UI、音訊、DirectX、編解碼器)

未指定逾時值時,如果呼叫此方法且緩衝區尚未準備好取得,則方法呼叫將會失敗,並出現錯誤碼 E_NOTREADY

規格需求

   
最低支援的用戶端 Windows 10版本 2004 (10.0;組建 19041)
最低支援的伺服器 Windows Server 版本 2004 (10.0;組建 19041)
標頭 windows.graphics.holographic.interop.h

另請參閱

AcquireDirect3D12BufferResource