WP 7/8 + xna 游戏默认设置为 30 FPS,我想知道如果我将其设置为 60 FPS,任何缺点/性能问题/错误/任何其他。因为我总是想以 60 fps 的速度玩/开发游戏。
2 回答
我只想为 Strife 的其他出色答案添加几点。
物理模拟通常在更高的 FPS 下更稳定。即使您的游戏以 30 FPS 运行,您也可以通过每帧执行两次 1/60 秒的更新以 60 FPS 运行物理模拟。这为您提供了更好的模拟,但 CPU 成本很高。(尽管对于物理学来说,固定帧率比高帧率更重要。)
如果您每秒轮询输入 30 次而不是 60 次,您将错过输入状态的极快变化,从而失去一些输入保真度。
同样,您的帧速率会影响输入输出延迟。在较低的帧速率下,输入更改将需要更长的时间才能反映在屏幕上,从而使您的游戏感觉反应迟钝。这也可能是音频反馈的问题——尤其是在音乐应用中。
最后两点只有在你有一个非常紧张的游戏时才真正重要(Super Hexagon就是一个很好的例子)。虽然我必须承认我不知道 WP7/8 上的触摸输入实际刷新的速度有多快——很难找到相关信息。
Windows Phone 7 SDK 将 XNA 设置为 30 FPS,因为 Windows Phone 7 设备上的屏幕具有 30hz 刷新率。这意味着屏幕每秒刷新 30 次。如果您每秒绘制 30 次,并且您每秒刷新 30 次,则您以该设备的最佳平滑率。
大多数人瞄准 60(或在我的游戏 PC 上为 120)的原因是因为大多数显示器的刷新率是 60hz(有些现在是 120hz)。 如果您的 FPS 高于您的刷新率,您将不会注意到其他任何东西,除了可能的“屏幕撕裂”效果,当您在一秒钟内渲染的帧数超过屏幕刷新率时会发生这种情况。
换句话说,假设你在屏幕上画了两次,然后你的屏幕刷新了一次,你为什么还要费心画第二次呢?当渲染速度超过设备的刷新率时,会浪费电池寿命、cpu 使用率和 gpu 使用率。因此,如果您坚持使用 XNA,我对您的建议是坚持使用 30 FPS,因为较旧的设备不会通过渲染更多帧而获得任何好处,并且如果有的话,您会遇到诸如屏幕撕裂之类的图形异常。
如果您计划针对更高端(和更新)的 windows phone 8 设备,放弃 XNA,采用 Direct3D 路线并使用 Microsoft 的“DirectX Toolkit”,因为它包含 XNA 的“图形功能”,如 spritebatch,但使用 C++ 而不是 C#。
我希望这有帮助。