我正在为 XBOX 开发一个应用程序(XNA 游戏),这是一个非常简单的应用程序。起始页包含带有移动 gif 图像的图块。这些 gif 图像实际上都是 png 图像,每个图块都会加载一次,并放入一个数组中。然后,使用定义的延迟,播放这些图像(使用每次延迟通过时增加的计数器)。
这一切都很好,但是,我注意到 GIF 图像的移动每隔 x 秒就会出现一些小的延迟。然后我开始添加一些基准测试的东西:
http://gyazo.com/f5fe0da3ff81bd45c0c52d963feb91d8
如您所见,这样一个简单程序的 FPS 非常低(这是在调试中,当从 Xbox 本身运行应用程序时,我得到的平均为 62fps)。2个重要设置:
Graphics.SynchronizeWithVerticalRetrace = false;
IsFixedTimeStep = false;
将 isFixedTimeStep 更改为 true 会增加延迟。设置图块有可旋转的轮子,您可以看到轮子每 x 秒后退一点。SynchronizeWVR 的计数相同,也会增加延迟。
我注意到滞后与垃圾收集器启动的那一刻之间存在联系,每次启动时,都会出现滞后......
不要介意 MAX HMU(堆内存使用),因为这是开始的数量,平均值更现实。
这是性能监视器的另一个屏幕,但是我对这个工具不太了解,第一次使用它......希望它有所帮助: