如何解决Windows 8游戏的触摸输入延迟?

时间:2013-01-13 01:11:11

标签: input windows-8 touch lag

我目前正在使用带有纯XAML(没有DirectX)的C ++为Windows 8开发游戏。在某些时候,我开始注意到触摸输入发生时的延迟(例如Tap。)鼠标点击(或其他鼠标事件)没有导致相同的滞后问题。我也注意到手指越多,发生的滞后就越多。

此问题似乎仅适用于XAML应用程序,无论是C ++还是C#。我尝试使用示例Direct3D项目,一切似乎都很好。

我创建了一个干净的平板C ++ XAML应用程序,除了1个Ellipse控件,其中有一个Storyboard可以在页面周围设置动画,然后尝试通过设置IsRightTapEnabled / IsHoldingEnabled / IsDoubleTapEnabled / ManipulationMode / IsTapEnabled / IsHitTestVisible来禁用根控制上的所有输入为假。但是在触发触摸输入时仍会出现延迟。

因此,从这一点来看,我确信在基础层面上必须出现问题。该应用程序几乎什么都不做,滞后仍然发生。

Windows 8上有像Hydro Thunder和Jetpack Joyride这样的游戏也存在触摸输入滞后问题(参见http://wrtapps.com/2012/12/windows-rt-games-suffering-from-touch-screen-input-lag/)。不知怎的,他们已经设法解决了这个问题。

我相信一定有办法解决这个问题(因为Halfbrick的某些人已经这样做过了。)这几乎就像Windows 8上的触摸消耗了比平时更多的CPU。但我无法弄清楚如何防止这种情况。我也找不到任何关于这个问题的博客文章。现在我用尽了线索:(

非常感谢对此问题的任何建议!

1 个答案:

答案 0 :(得分:3)

我在directX C ++应用程序中遇到了一个非常类似的错误(使用简单的XAML-Page),并将问题跟踪到触摸发生时显示的视觉反馈。

与您的程序一样,鼠标输入根本不会影响性能。

我通过禁用视觉触摸反馈解决了问题:

您必须获取当前视图的PointerVisualizationSettings并设置 ContactFeedbackEnabled属性为false。

执行此操作可以删除触摸时的任何性能。也许你只是想试一试。