AcquireDirect3D12BufferResourceWithTimeout 方法将 Direct3D 12 后台缓冲区资源的所有权从平台转换到应用程序,等待持续时间参数指示的时间量,使资源变得可用。 如果应用程序已拥有资源的控制权,则购买被视为成功,并且该方法会立即返回。
通过调用 IHolographicQuadLayerUpdateParametersInterop::CommitDirect3D12Resource 将资源提交到 HolographicFrame 后,应用程序应考虑控制系统拥有的资源,直到应用程序使用 AcquireDirect3D12BufferResourceWithTimeout 重新获取该资源。 系统拥有缓冲区,直到提交缓冲区的帧通过演示队列。 若要确定系统是否放弃了对缓冲区的控制权,请调用 AcquireDirect3D12BufferResource 或 AcquireDirect3D12BufferResourceWithTimeout。 如果在应用程序准备好开始呈现新的 全息帧时无法获取缓冲区,则应创建新资源并将其添加到缓冲区队列,或通过等待缓冲区变为可用来限制队列大小。
此方法接受可选的超时值。 当 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 |