问题标签 [frame-rate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache-flex - Flex 应用在 Chrome、Firefox 上的行为不同
我的 Flex 应用程序在 Chrome 和 Firefox 中的帧速率似乎不同。我有一个预加载器,它本质上是一个闪屏,会随着计时器逐渐消失,正是这部分具有明显的帧速率差异——它在 Firefox 中消失得更快。奇怪的是,我在应用程序的其余部分中使用的任何计时器似乎在浏览器中的行为都是一致的。只有这个预加载器/启动画面有帧率差异。
Chrome 或 Firefox 处理 Flash 的方式是否存在导致此问题的内在因素?还是我用预加载器设置我的应用程序的方式?我重新安装了 Flash,两个浏览器都运行 10.1,它承诺修复处理计时器和浏览器交叉兼容性的问题。
这真的让我很烦;任何帮助或信息将不胜感激!
iphone - 如何在新旧 iPhone 上获得一致的速度?
我正在为 iPhone 使用 OpenGL ES 创建 2D 游戏。我正在使用 NSTimer 以 0.002 (60 fps) 的间隔调用我的游戏循环,并将重复设置为“NO”(我正在按照建议从函数内再次运行 NSTimer):
这在我的 3GS 上运行流畅,但是当我在 2G 上测试时,游戏运行速度要慢得多,有时我会偶尔出现空白帧。当我将间隔降低到 0.033 (30 fps) 时。3G太慢了。
我知道必须有某种方法可以在两种设备上获得一致的播放。Doodle Jump 似乎在两部手机上运行流畅且帧率相同。
android - Android 2d 画布游戏:FPS 抖动问题
我的游戏基于月球着陆器演示,虽然经过大量修改,我可以达到 40-50fps 左右,但问题是它在 40-50fps 之间波动太大,导致运动图形抖动!这很烦人,让我的游戏看起来很糟糕,而实际上它以良好的帧速率运行。
我尝试将线程优先级设置得更高,但这只会让情况变得更糟……现在它将在 40-60fps 之间波动……
我正在考虑将 FPS 限制在 30 左右,以便它保持不变。这是一个好主意吗?其他人有经验或不同的解决方案吗?
谢谢!
这是我的运行循环
android-emulator - 在 Android 模拟器中显示 CPU 使用率和 FPS
我已经将我的 DDMS 设置为与模拟器一起工作并显示正在运行的进程等,但在我的模拟器的开发工具中,它首先不会让我勾选 Show CPU Usage 框,其次我似乎没有显示选项根据互联网上的消息来源,FPS 显然是可以做到的。
有没有人遇到过这个问题并且知道我该如何解决它并在我的 android 游戏运行时显示 CPU 使用率和 FPS?
谢谢
artificial-intelligence - 需要应用 AI 项目的建议
我在本学期有一门课程,要求我做一个关于人工智能应用的项目。我决定在游戏 AI 上做这件事。我有两个基本想法:实现 FPS 机器人或实现足球 AI。
我现在在 AI 方面很安静,我已经实现了基本的寻路算法(A* 等),并且研究了有限状态机、一些一阶逻辑、基本的神经网络东西(反向传播算法),目前我正在做遗传算法课程。
我们现在主要关注的是机器人。我们的计划包括:
- 每个“机器人”都将使用有限状态机 (FSM) 实现,其中包含机器人可能具有的可能状态;& 接收输入时将发生的动作/状态更改的规则。
- 在机器人组移动中,每个机器人将决定是否攻击、攻击方式;基于范围、机器人数量、使用神经网络的现有战斗。
- 通过使用遗传算法,可以根据重复动作预测对手的下一步动作。
虽然到目前为止我在空闲时间编写了一些 2d 游戏(如吃豆人、俄罗斯方块等),但我从未真正进入 3d 领域。我们很可能会使用 3d 引擎。
我们希望将大部分精力集中在人工智能部分。我们不想被关于动画/3d 模型等不必要的细节所困扰。例如,如果我们能找到一个框架,它具有像 Moveright() 这样的函数,它只是将机器人向右移动,那将是非常棒的。
我的基本问题是:考虑到项目的持续时间约为 3 个月,按照我们计划的方式进行是否过于雄心勃勃?我们应该去 3d 并使用 3d 游戏引擎吗?如果您以前没有使用过这些引擎,那么使用这些引擎是否容易?如果是,什么样的引擎适合我们的项目?
我遇到了另一个想法,在 AI Game Programming by example 一书中给出,玩家可以从上到下查看机器人。这样会更合适吗?
谢谢..对不起问题的长度..只是我的问题有点太具体了。
flash - 在对象标签中控制动画帧速率?
我有一个编译的 Flash 动画 (swf) 使用 object 标记嵌入到 HTML 文档中。
问题:有可能使用对象标签中的一些参数来更改原始 SWF 帧速率吗?
我没有源代码(FLA)。
我想降低帧率。
感谢您的任何帮助,
msdn - 如何在简单的 Direct2D 应用程序中计算 fps?
嘿伙计们,感谢您的关注。我从 MSDN 构建了简单的 D2D 应用程序,可在此处获得。现在,我想绘制一些图元并添加一个 fps 计数器。
我有一个 OnRender() 事件,我在其中绘制矩形等。我还调用了 RenderTextInfo(),我调用了 RenderTarget->DrawText。我在哪里添加计算每秒帧数的逻辑?
非常感谢。
xna - XNA 4.0 以 50 而不是 60 fps 运行
我正在使用 XNA 4.0 进行一些试验,遵循教程并创建非常基本的东西(比如三角形和一些线条;-))。在执行此操作时,我注意到我所有的应用程序从未以超过 50-51 fps 的速度运行(使用 Fraps)。这并不是说我在慢速计算机或显卡(Ati HD4870)上运行繁重的程序,它一定与 XNA 有关(游戏在这里运行得很好)。
现在,我读到的关于 XNA 的所有内容都说默认更新频率是每秒 60 次,我想得到它。
- 全屏和窗口一样
- 如果我将 SynchronizeWithVerticalRetrace 设置为 false 或 true:相同
- 如果在没有 Visual Studio 的情况下运行程序,我只能得到 41 fps
TargetElapsedTime = new TimeSpan(0, 0, 0, 0, 10);
当我使用fps覆盖更新频率时,确实会显着增加。我注意到这仍然不正确:10 表示 10 毫秒,但我“只”得到 83 fps 而不是 100。在 1 毫秒时我得到 850 fps。所以我得到的 fps 和我应该得到的 fps 的偏差是相当一致的。在我看来,时间似乎有问题?
任何人都知道这里可能存在什么问题和/或有建议获得稳定的 60 fps?
谢谢!
animation - 限制帧速率时对象移动不连贯
我一直在游戏中物体的不稳定运动遇到一些麻烦。
如果帧速率没有上限,则游戏运行流畅。
如果我将帧速率限制为 60 fps,则运动是不稳定的。
物体的运动是这样的……
其中速度以每秒像素为单位,GetFrameTime() 返回自上一帧以来经过的时间。请注意,对象仅在 x 和 y 方向上移动。
我正在使用 SFML,具有函数SetFramerateLimit(60)
和UseVerticalSync(true)
. 在尝试解决不稳定的运动问题时,我阅读了 XNA 开发人员的一篇文章,内容是他们如何更新一次、渲染一次,然后如果游戏循环中剩余的时间 < 帧速率(即 1/60)那么他们在那段时间剩下的时间里我都会睡觉。我相信这就是 SFML 所做的,因为我禁用了这些功能并在该行为中写入,我得到了相同的症状。
现在我并不是说上述方法是一件坏事。事实上,我喜欢该应用程序没有做不必要的工作(在使用设置的帧限制和没有设置帧限制运行应用程序时,资源使用情况存在显着差异)。但是,我真的不知道为什么运动是波涛汹涌的。我已经阅读了 gafferongames 文章,但它们似乎不适用于这里。
任何帮助表示赞赏,谢谢。
编辑:我已经确定了问题,现在只是不知道如何解决它。
在对象“跳跃”的帧上,m_distance 明显大于其他帧中的距离。仔细观察,GetFrameTime() 也显着大于帧之间的先前时间(显着差异为 2-3 毫秒)。
Edit2:我相信我已经想出了一个解决方案,这要归功于http://gafferongames.com/game-physics/fix-your-timestep/。设置一个固定的增量时间,而不是使用 GetFrameTime。
c# - 以高帧率显示图像
这就是问题所在:我有一个自定义硬件设备,我必须在 C#/WPF 中从中获取图像并将它们显示在一个窗口中,所有这些都具有 120+ FPS。
问题是没有事件表明图像已准备就绪,但我必须不断轮询设备并检查是否有任何新图像然后下载它们。
显然有几种方法可以做到这一点,但我还没有找到合适的方法。
这是我尝试过的:
一个简单的计时器(或 DispatcherTimer) - 适用于较慢的帧速率,但我无法让它超过 60 FPS。
一个单线程无限循环 - 非常快,但我必须将 DoEvents/它的 WPF 等效项放入循环中,以便重绘窗口;这会产生一些其他不需要的(奇怪)后果,例如某些控件未触发的按键事件等。
在另一个线程中进行轮询/下载并在 UI 线程中显示,如下所示:
好吧,这工作得比较好,但是会给 CPU 带来相当大的负载,如果它没有超过一个 CPU/核心,当然会完全杀死机器,这是不可接受的。另外,我这种方式存在大量线程争用。
问题很明显——有没有更好的选择,或者在这种情况下是其中一种方法吗?
更新:
我不知何故忘了提到这一点(好吧,写这个问题时忘了考虑它),但是我当然不需要显示所有帧,但是我仍然需要捕获所有帧以便保存它们到硬盘。
Update2: 我发现 DispatcherTimer 方法很慢不是因为它不能足够快地处理所有事情,而是因为 DispatcherTimer 在触发滴答事件之前等待下一次垂直同步;这在我的情况下实际上很好,因为在滴答事件中,我可以将所有待处理的图像保存到内存缓冲区(用于将图像保存到磁盘)并只显示最后一个。
至于被捕获完全“杀死”的旧计算机,WPF似乎退回到非常慢的软件渲染。我可能无能为力。
感谢所有的答案。