正如Optimizing DirectX apps for low latency input...所述,使用 DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT 可以提高应用程序的响应速度。我对此有几个问题:
由于
答案 0 :(得分:5)
对Present
(或Present1
)的调用是非阻塞的,并且很快就会返回。它只是向API指示您已完成帧并准备好显示帧缓冲区。为了防止CPU远远超出GPU,默认情况下,一旦3帧排队,Windows将在Present
上阻止。这通常会以稳定的速度在应用程序中平滑,但这种额外的延迟可能是基于触摸的UI应用程序的真正问题。
CoreWindow API仅适用于基于WinRT的平台,如UWP for Windows 10,Windows Store,Windows Phone 8和Xbox one。它们不适用于Windows桌面应用程序。
在Windows桌面应用中可以执行的操作是使用DXGI_PRESENT_DO_NOT_WAIT
标记,如果Present
返回失败代码DXGI_PRESENT_DO_NOT_WAIT
,则应用程序知道它有多个帧排队起来。你可以做其他的工作来等待,限制你的内容,或做其他聪明的事情,但大多数游戏只是运行'平坦'并让游戏阻止,如果它渲染得太快。