【问题标题】:Strange behavior with google chrome and FPS谷歌浏览器和 FPS 的奇怪行为
【发布时间】:2012-07-15 19:40:54
【问题描述】:

我编写了一个小引擎,在 Canvas2D 中使用 javascript 显示 5 个精灵。一切正常,并且经过全面优化。

FPS 在 30 和 60 之间波动 - 但有趣的是,当 google javascript 控制台打开时,它会以恒定的 60 fps 显示!

还有其他人经历过这种情况吗?

n.b.我正在使用 requestAnimationFrame

编辑:

示例: http://jsfiddle.net/jrPNy/1

玩转“粒子”数,使您的 fps 大约为 40-50。比打开控制台,它上升到 60 fps。 (Chrome 21.0.1180.83)

【问题讨论】:

  • 会不会是焦点问题?当 Chrome 认为页面没有焦点时,它可能会故意降低 FPS,并且打开控制台可能会以某种方式触发始终聚焦的行为。
  • 看不出这是焦点问题,因为选项卡始终保持焦点。当焦点丢失时,fps 会按预期归零。
  • 你有一些代码我们可以看看吗?
  • 我发现并不是我打开控制台本身,而是打开控制台使窗口变小,从而使绘图画布区域变小。
  • 是的 :) 你应该把赏金奖励给你 :)

标签: javascript google-chrome html5-canvas


【解决方案1】:

正如问题作者在评论中所说,这与可见的画布区域有关。打开控制台会降低视口的高度,这在正常尺寸的显示器上意味着要渲染的内容更少。 60 FPS 是显示刷新率给出的软限制;做比这更多的帧没有意义,因为在普通显示器上每秒显示超过 60 帧是不可能的。

我在我的机器上对此进行了测试,降低了 CPU 速度,因此我不会总是获得 60FPS。在提供的 Fiddle 示例中,我通常有大约 24FPS。打开控制台将可见画布缩小到其原始大小的 60% 左右,FPS 平均增加到 30。调整控制台的大小会相应地影响 FPS:只有 10% 的画布可见,FPS 在 42 左右摆动,而在一个非常小的控制台和整个画布可见的情况下,FPS 略低于原始值,达到 23。无论控制台的状态如何,CPU 速度都会使 FPS 保持在恒定的 60。

现在,鉴于生成屏幕的 JavaScript 仍在运行,无论画布有多少可见,影响所需处理能力的是画布的实际渲染,以及画布图像合成到的方式HTML 的其余部分,在浏览器窗口上,最后在屏幕上。越来越多的工作转移到 GPU 上,所以当合成过程的每个阶段都在 OpenGL 中完成时,FPS 应该总是最大化。

【讨论】:

  • 那么我们不会遇到同样的事情,我已经激活了 Accelerated 2D Canvas。在我现在开发的游戏中,chrome 只能给我 30fps。使用控制台,我有恒定的 60。画布尺寸不小,画布上的查看部分也不小。我把控制台放在底部几乎可见,所以我得到了一个平滑的开发。
  • 这很奇怪...所以任何时候关闭控制台,帧率都会下降到 30,并且任何时候重新激活,FPS 都会回到 60?
  • 是的,就像这样,它在小提琴示例中并不是很糟糕,但也有明显的效果。我添加了一个视频,以便您了解我的意思。
  • 确实,我们没有遇到同样的事情。我什至在 Windows 机器上尝试过,我总是得到一个恒定的 FPS(和chrome:gpu 几乎相同)。你能在不同的机器上重现它吗?
  • 我认为它会影响更多系统,因为我的 2 个系统的架构非常不同(板载 Intel HD Graphics 和 nVidia Geforce 8800GT)。它也发生在干净的浏览器安装(没有任何扩展)上。我开了一张铬票:code.google.com/p/chromium/issues/detail?id=144940。我会看看他们是否可以帮助我。
【解决方案2】:

我在我的 macbook 上使用 chrome 时遇到了同样的事情。似乎 osx 坞站导致帧速率变慢,当您打开控制台时,视口会从坞站移开足够远,以使帧速率回到 60fps。如果您将窗口从扩展坞移开,则帧速率会上升。如果您自动隐藏扩展坞,您可以在不打开控制台的情况下以 60fps 全屏显示。

【讨论】:

    【解决方案3】:

    Google chrome 使用 vsync 意味着它将 FPS 限制为您的屏幕 FPS 限制,大多数屏幕为 60 FPS,因此您的 google 会尽可能匹配,但不会超过它。可能有一个程序可以删除 vsync,但我知道 Nvidia 驱动程序可以控制它,但您需要 GTX 610 或更高版本来执行此操作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      相关资源
      最近更新 更多