【发布时间】:2013-05-23 01:35:50
【问题描述】:
一个新的 XNA 游戏项目应用程序在其窗口处于活动状态时会消耗相当多的 CPU 百分比。在我的台式电脑上,它大约是 2 核处理器的一个核心的 30%。当窗口失去焦点时,游戏进入空闲模式并消耗大约 1% 的 CPU。
在我最近使用 XNA 制作的图像查看器应用程序中,在没有进行图像处理时重绘帧没有多大意义,因此我使用了 SuppressDraw() 方法,顾名思义,该方法抑制了资源消耗用于绘制下一帧,而是显示最后绘制的帧。但是,仍然存在应用程序不断浪费 CPU 进行非常简单的输入更新的问题。
当 XNA 应用程序不需要太多 CPU 时,如何减少它的 CPU 使用率?
【问题讨论】:
-
分析您的应用程序以查看它的处理时间在哪里。然后改变执行流程,避免不必要的处理。
-
@axon 正如我所说,输入更新非常简单。当应用程序的窗口不在焦点上时,应用程序不会消耗太多,但是当它处于焦点时,它就太高了,什么都不做。
-
您可以简单地将 Sleep(100) 添加到主循环中。如果没有任何好处,那么每秒渲染 100 帧是没有意义的。或者,设置一个目标帧速率并调整您的睡眠时间以达到该目标。
-
@axon 我真的不认为这是 PC XNA 应用程序的选项。
-
是的。你真的应该试试。 “如果你真的需要为某件事等待特定的时间,那么睡眠是合适的。”来自:stackoverflow.com/questions/1096794/is-sleep-evil当然,如果你使用的框架已经实现了,那就使用它
标签: performance xna