IHolographicQuadLayerInterop::AcquireDirect3D12BufferResourceWithTimeout 方法 (windows.graphics.holographic.interop.h)
AcquireDirect3D12BufferResourceWithTimeout 方法将 Direct3D 12 后台缓冲区资源的所有权从平台转换到应用程序,等待持续时间参数指示的时间量,使资源变得可用。 如果应用程序已拥有资源的控制权,则购置仍被视为成功,并且该方法会立即返回。
通过调用 IHolographicQuadLayerUpdateParametersInterop::CommitDirect3D12Resource 将资源提交到 HolographicFrame 后,应用程序应考虑对该资源的控制权,直到应用程序使用 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 错误代码 (UI、音频、DirectX、编解码器) 。
如果未指定超时值,则如果调用此方法且缓冲区尚未准备好获取,则方法调用将失败并 显示错误代码E_NOTREADY。
要求
最低受支持的客户端 | Windows 10版本 2004 (10.0;内部版本 19041) |
最低受支持的服务器 | Windows Server 版本 2004 (10.0;内部版本 19041) |
标头 | windows.graphics.holographic.interop.h |