IHolographicCameraInterop::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 资源。

pCommandQueue

类型: ID3D12CommandQueue*

Direct3D 12 命令队列,用于在获取应用程序时转换此资源的状态。 获取资源时,资源将处于 D3D12_RESOURCE_STATE_COMMON 状态。

duration

类型: UINT64

如果此参数设置为非零值,则调用将等待获取缓冲区的时间量。 如果获取缓冲区之前的超时期限已过,该方法将失败并 显示错误代码E_TIMEOUT。 此参数以 100 纳秒为单位指定,类似于 TimeSpan.Duration 字段。

返回值

S_OK 如果成功,则返回 一个 HRESULT 错误代码,指示失败原因。 另请参阅 COM 错误代码 (UI、音频、DirectX、编解码器)

要求

要求
最低受支持的客户端 Windows 10版本 2004 (10.0;内部版本 19041)
最低受支持的服务器 Windows Server 版本 2004 (10.0;内部版本 19041)
标头 windows.graphics.holographic.interop.h