Performance 如何在没有值得计算的情况下减少XNA游戏CPU的使用?

Performance 如何在没有值得计算的情况下减少XNA游戏CPU的使用?,performance,xna,Performance,Xna,新的XNA游戏项目应用程序在其窗口处于活动状态时会消耗相当多的CPU百分比。在我的台式电脑上,它大约占2核处理器的30%。当窗口失去焦点时,游戏进入空闲模式并消耗大约1%的CPU 在我最近使用XNA制作的一个图像查看器应用程序中,在没有进行图像处理的情况下重新绘制帧没有多大意义,因此我使用SuppressDraw()方法,顾名思义,该方法不必花费资源来绘制下一帧,而是显示最后绘制的帧。但是仍然存在一个问题,应用程序为了一个非常简单的输入更新而不断地浪费CPU 在XNA应用程序不需要太多CPU的情

新的XNA游戏项目应用程序在其窗口处于活动状态时会消耗相当多的CPU百分比。在我的台式电脑上,它大约占2核处理器的30%。当窗口失去焦点时,游戏进入空闲模式并消耗大约1%的CPU

在我最近使用XNA制作的一个图像查看器应用程序中,在没有进行图像处理的情况下重新绘制帧没有多大意义,因此我使用
SuppressDraw()
方法,顾名思义,该方法不必花费资源来绘制下一帧,而是显示最后绘制的帧。但是仍然存在一个问题,应用程序为了一个非常简单的输入更新而不断地浪费CPU

在XNA应用程序不需要太多CPU的情况下,如何降低其CPU使用率

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

一个常见的解决方案(对我来说也是有效的)是将以下内容放入游戏构造函数中:
IsFixedTimeStep=false


更多详细信息

分析您的应用程序,以查看它在哪里花费处理时间。然后更改执行流以避免不必要的处理。@axon正如我所说的,输入更新非常简单。当应用程序的窗口不在焦点时,它不会消耗太多,但是当它处于焦点时,它就太高了,不能什么都不做。你可以简单地将Sleep(100)添加到主循环中。如果没有好处,每秒渲染100帧是没有意义的。或者,设定一个目标帧速率并调整睡眠时间以达到该目标。@axon我真的不认为这是PC XNA应用程序的选项。它是。你真的应该试试。From:当然,如果你使用的框架已经实现了这一点,那么使用它这正是我所需要的!谢谢