第8页:DX 11.2 新特性——低输入延迟呈现API
Low-latency presentation API (低延迟呈现API)
“Low-latency presentation API”是对用户操作做出迅素反应的机构,比如提高触摸操作游戏中的反应速度。
Windows的画面显示中,针对用户鼠标、触摸、键盘等的输入进行反映的行为很多。使用DirectX显示的应用程序需要在内部线程中以“检测输入→处理检测到的输入→面面描绘”这样的过程往复执行。
DirectX在执行描绘的线程时,是有条件制约的,必须依托DirectX执行线程的执行控制。原因就像刚才接触到的,现在的Windows画面描绘全部都由DirectX进行最终处理。这与占用全屏幕的DirectX游戏还不一样,桌面上会同时存在多个应用程序,它们的描绘需要DirectX公平对待,每一个描绘线程需要控制在同样比例、一定的时间内。
然而控制描绘线程的执行比例,就要增加输入检测的时间间隔,进而可能降低帧数。一般的Windows程序倒是受这方面的影响不大,但有些程序(尤其是游戏)必须对用户的输入做出迅速的反应。保证一定帧率和输入检测的周期,尽可能地减小输入反应的延迟,这就是Low-latency presentation API 所要做的。
Low-latency presentation API在已经确定的每秒画面帧率之上,提供尽力保证帧数不改变的输入检测与反应的周期。以此降低输入的反应延迟,提高用户的使用舒适度。
▲魔兽世界的系统设置界面中就有降低输入延迟的选项,从提示中可以看到,过去开启降低输入延迟会有可能明显降低画面帧数,而DirectX 11.2则会解决这一问题。
下图所示的图像是Low-latency presentation API演示动画(注)的截图,上边图像未启用Low-latency presentation API,下面为启用。通过追踪鼠标指针的红色圆形,可以看出延迟的差异。从数字上来看,未启用时延迟为46ms,启用后降低至16ms,这对于触摸操作的游戏来说,可以大幅提高体验。
注:动画来自MSDN页面,截取点为38分20秒左右。
Low-latency presentation API演示图像。上为模拟Windows 8的Low-latency presentation API未启用状态,右为Windows 8.1的启用状态。鼠标在画面上快速移动,用红色的圆形演示追踪时间差。很容易看出下方的延迟较短。