XNA 的 CPU 使用率高

2024-01-23

我今天刚刚注意到,当我编译并运行一款新的 XNA 4.0 游戏时,其中一个 CPU 线程以 100% 的速度运行,并且帧速率下降到 54 FPS。

奇怪的是,有时它可以在 60 FPS 下运行,但随后就会下降到 54 FPS。

我以前没有注意到这种行为,所以我不知道这是否正常。我卸载了防病毒软件并重新安装了 XNA Game Studio、XNA Redistributable 和 .NET Framework 4。

如果我将 IsFixedTimeStep 设置为 false,则游戏以 60 FPS 运行,并且 CPU 使用率最低 (1-2%)。但据我所知,这需要我使用 ElapsedGameTime 进行速度计算,但我不知道该怎么做,因为我对 XNA 相当陌生。但有人说将其设置为 false 可以减少动画的抖动。

我已经查过了这个论坛主题 http://forums.create.msdn.com/forums/t/46682.aspx,但还没有人找到好的解决办法。

有人遇到过这个问题吗?

EDIT:我做了更多研究,实现了一个 FPS 计数器(到目前为止,我用 Fraps 进行测量),我的计数器显示游戏以 60 FPS 运行(IsFixedTimeStep = true),所以这解决了 FPS 问题,但 CPU 较高用法仍然存在。有可能每个人都会遇到这种情况吗?


根据Xbox Live 独立游戏论坛上的此讨论 http://xboxforums.create.msdn.com/forums/t/46682.aspx,显然在某些处理器(和操作系统)上 XNA 占用当默认值为 100% 时,一个核心上的 CPU 时间为 Game.IsFixedTimeStep is used.

A 共同解决方案(对我也有用的一个)是将以下内容放入您的Game构造函数:

IsFixedTimeStep = false;

这是什么意思?

The Game.IsFixedTimeStep http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.isfixedtimestep%28v=xnagamestudio.10%29.aspx财产,当true,确保您的框架(Update(), Draw(), ...) 被调用于固定时间间隔指定于Game.TargetElapsedTime。这默认为每秒 60 次调用.

When Game.IsFixedTimeStep = false,对下一帧的调用将在前一帧完成时发生。下面的时间图说明了这一点:


此更改如何影响我的代码?

所有固定时间计算(动作, timings等)需要进行修改以适应可变的时间步长。值得庆幸的是,这很简单.

假设你有

Vector3 velocity;
Vector3 position;

对于某些对象,您正在更新位置

position += velocity;

默认情况下,这意味着你的物体的速度是 60 * velocity.Length()每秒单位。每秒增加 60 次速度。

当你把这句话翻译成代码时,你会得到这个简单修改:

position += velocity * 60 * gameTime.ElapsedGameTime.TotalSeconds;

简单来说:您根据经过的时间来缩放添加的值.

通过在执行移动(或计时等)的地方进行这些修改,您将确保您的游戏按照固定时间步长时的方式运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XNA 的 CPU 使用率高 的相关文章

随机推荐

  • Cython 并行 prange - 线程局部性?

    我正在使用 prange 迭代这样的列表 from cython parallel import prange threadid cdef int tid cdef CythonElement tEl cdef int a b c elLi
  • tabindex 给出了它的焦点,但是在回车键上输入它不起作用

    当我用鼠标单击搜索图标时 它工作正常 但是当我使用选项卡并且焦点转到图标时 但当我输入 ENTER 关键字时 它不起作用 div class mobile header icon i class search i div 紧迫enter不触
  • Carrierwave:如果尺寸大于则缩放图像(有条件创建版本)

    仅当图像大于版本大小时 才可以使用载波创建版本 例如拇指 吗 Example version thumb if gt is thumbnable do process resize to fit gt 32 nil end protecte
  • 类型注释被推断的表达式类型覆盖

    在 Scala 编程语言中 假设我将使用更广泛的类型注释表达式并提供一个狭窄的值 我的程序将被拒绝 scala gt def x A A 8
  • 使用 HTML 和 CSS 剪辑图像

    我想在 144px x 144px div 元素中显示图像 图像总是大于 144px 所以我想缩放它们 我的意思是最小的一侧将接触 div 的边缘 从另一侧 与信箱相反 切掉一点 我怎样才能做到这一点并让它在 IE 等旧版浏览器上也能工作
  • 在 NodeJS Lambda 函数中列出 AWS.CognitoIdentityServiceProvider.listUsers 中的用户及其组?

    因此 我需要在客户端的自定义管理屏幕中显示用户列表及其各个组 我正在返回结果AWS CognitoIdentityServiceProvider listUsers在 Lambda 函数中 这可以很好地列出用户 但我不确定为每个用户获取组并
  • 按行名称连接多个表[重复]

    这个问题在这里已经有答案了 我想按行名称合并多个表 这些表的行数不同 并且它们具有唯一行和共享行 这些行都应该出现在输出中 如果可能的话我想解决这个问题awk 但我也对其他解决方案感到满意 表1 tab a 5 b 5 d 9 表2 tab
  • C++:成员指针已初始化?

    代码示例应该解释一下 class A B pB C pC D d public A int i int j d j pC new C i abc note pB is not initialised e g pB NULL 显然 pB 应该
  • C++ 11 线程与 clang

    我想学习使用 C 11 线程来加速我的语言的编译 是的 我正在构建一个编译器 x 我尝试的第一个示例在 clang 3 3 SVN 中抛出了几个错误 它在 GCC 4 6 3 下编译得很好 我从 llvm org 的 SVN 下载了 cla
  • 将对象的子集直接解构为新对象[重复]

    这个问题在这里已经有答案了 有没有一条语句可以做到这一点 我正在空白 this state is a basic object with many keys var toDate fromDate location flavor this
  • 无法更新 FBSDKCoreKit POD iOS

    当我尝试进行 pod 更新时 出现以下错误 一旦失败 我什至无法再进行 pod install 了 安装FBSDKCoreKit 4 36 0 安装 FBSDKCoreKit 时出错 usr bin git 克隆https github c
  • Visual C++ 中的堆框架有多大

    在 Visual C 中 如果我使用 new 在堆上创建对象 堆帧头和填充会占用多少额外空间 特别是在发布代码中 我期望一个 int 表示块中有多少可用空间 另一个可能表示当前正在使用多少空间 并且帧大小根据体系结构四舍五入到最接近的 32
  • WEB API 返回遵循序列化属性的对象

    我正在使用 WEB API 返回一个对象 类 类已经使用 System Xml Serialization 属性进行结构化 这使得使用 WEB API 返回整个类变得困难 因为它公开的内容超出了应有的范围 我不认为这是序列化类并返回字符串的
  • MDX 查询返回记录数

    以下是我的 MDX 查询 SELECT NON EMPTY Measures Fact Sample Count ON COLUMNS NON EMPTY Fact Sample Sample Reference No Sample Ref
  • Django 的缓存模块可以在 Google App Engine 上运行吗?

    我正在 Google App Engine 上运行 Django 1 0 2 并且想知道以下哪一项 如果有 Django 缓存模块 http docs djangoproject com en dev topics cache 本质上应该与
  • GCC 生成的 ARM 和 x86 汇编代码的差异

    让我们看一个简单的 C 代码来设置寄存器 int main int a int 111111 a 0x1000 return 0 当我使用 1 级优化为 ARM arm none eabi gcc 编译此代码时 汇编代码类似于 mov r2
  • travis 构建失败,因为缺少 devtools

    我正在尝试设置 travis 构建 但失败并出现以下错误 export PKG TARBALL Rscript e pkg lt devtools as package cat paste0 pkg package pkg version
  • Django JavaScript 文件

    在 Django 应用程序中 我应该将 javascript jquery 脚本放在哪里 与其他静态媒体一起使用 请参阅此处了解更多信息 http docs djangoproject com en dev howto static fil
  • 使用 Margin Auto 和 Center 将 Float Left Div 居中

    我知道这个问题已经被问过很多次了 将 div 居中对齐 https stackoverflow com questions 1740587 float a div to center 不过 我遵循他们的建议
  • XNA 的 CPU 使用率高

    我今天刚刚注意到 当我编译并运行一款新的 XNA 4 0 游戏时 其中一个 CPU 线程以 100 的速度运行 并且帧速率下降到 54 FPS 奇怪的是 有时它可以在 60 FPS 下运行 但随后就会下降到 54 FPS 我以前没有注意到这