【问题标题】:How to reduce XNA game CPU usage while nothing worth computing is happening?如何在没有任何值得计算的事情发生的情况下减少 XNA 游戏 CPU 使用率?
【发布时间】: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


【解决方案1】:

引用this问题

根据 XBox Live Indie Games 论坛上的讨论,显然在某些处理器(和 OS-s)上,当使用 Game.IsFixedTimeStep 的默认值时,XNA 在一个内核上占用 100% 的 CPU 时间。

一个常见的解决方案(也适用于我)是将以下内容放入您的 Game 构造函数中: IsFixedTimeStep = false;

更多详情here

【讨论】:

  • 这正是我所需要的!谢谢
猜你喜欢
  • 1970-01-01
  • 2023-01-16
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多