谷歌浏览器和FPS的奇怪行为

时间:2012-07-16 21:52:17

标签: javascript google-chrome html5-canvas

我编写了一个小引擎,在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)

3 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:0)

我的macbook上的chrome经历了同样的事情。看起来osx底座会导致帧速率变慢,当您打开控制台时,视口会从底座移开足够远,以使帧速率恢复到60fps。如果您将窗口移离底座,则帧速率会上升。如果您自动隐藏扩展坞,则可以在不打开控制台的情况下获得60fps全屏。

答案 2 :(得分:-1)

Google Chrome使用vsync意味着它会将FPS限制为你的屏幕FPS限制,大多数屏幕都是60 FPS所以你的谷歌会尽可能匹配,但不会超过它。可能有一个程序要删除vsync,但我知道Nvidia驱动程序可以控制这个,但你需要一个GTX 610或者hight来做这个