4

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

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

我创建了一个干净的 C++ XAML 应用程序,除了 1 个 Ellipse 控件之外几乎什么都没有,该控件有一个 Storyboard 以在页面周围对其进行动画处理,然后尝试通过将 IsRightTapEnabled/IsHoldingEnabled/IsDoubleTapEnabled/ManipulationMode/IsTapEnabled/IsHitTestVisible 设置为 False 来禁用根控件上的所有输入。但是在触发触摸输入时仍然会出现延迟。

因此,从这一点来看,我确信在基本层面上肯定有问题。该应用程序几乎什么都不做,并且仍然存在滞后。

Windows 8 上的 Hydro Thunder 和 Jetpack Joyride 等游戏也存在触摸输入延迟问题(请参阅http://wrtapps.com/2012/12/windows-rt-games-suffering-from-touch-screen-input-滞后/)。不知何故,他们已经设法修复它。

我相信一定有办法解决这个问题(Halfbrick 的人已经这样做了。)这几乎就像 Windows 8 上的触摸比平时消耗更多的 CPU。但我不知道如何防止这种情况。我也找不到任何其他关于此问题的博客文章。现在我没有线索了:(

对此问题的任何建议将不胜感激!

4

1 回答 1

3

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

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

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

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

这样做可以消除触摸时的任何性能下降。也许你只是想试一试。

于 2013-03-20T17:14:34.140 回答