我目前正在使用纯XAML(没有DirectX)的c++开发一款Windows 8游戏。在某些时候,我开始注意到当触摸输入发生时出现延迟(例如点击)。鼠标单击(或其他鼠标事件)不会导致相同的延迟问题。我还注意到,手指接触的次数越多,延迟就越严重。
这个问题似乎只针对XAML应用程序,无论是c++还是c#。我尝试了样本Direct3D项目,一切似乎都很好。
我创建了一个简洁的c++ XAML应用程序,除了一个椭圆形控件,它有一个故事板,可以在页面周围动画,然后尝试通过设置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。但我不知道该怎么预防。我也找不到其他关于这个问题的博客文章。现在我没有线索了:
对这个问题的任何建议都将非常感谢!
我在我的directX c++应用程序中遇到过非常类似的错误(使用简单的xhtml - page),并将问题追踪到触摸发生时显示的视觉反馈。
与您的程序一样,鼠标输入完全不影响性能。
我通过禁用视觉触摸反馈解决了这个问题:
你必须获得当前视图的PointerVisualizationSettings并设置ContactFeedbackEnabled属性为false。
这样做可以消除触摸时的任何性能下降。也许你只是想试一试。