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

Jam*_*ron 17 javascript google-chrome html5-canvas

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

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

有没有其他身体经历过这个?

我正在使用requestAnimationFrame

编辑:

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

玩"粒子"数字,所以你的fps大约是40-50.比打开控制台,它最高可达60 fps.(Chrome 21.0.1180.83)

Ser*_*riu 7

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

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

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

  • 那么我们没有经历相同的事情,我已经激活了Accelerated 2D Canvas.在我现在开发的游戏中,chrome只能给我30fps.使用控制台,我的常量为60.画布尺寸不小,画布上的观察部分也不小.我把控制台几乎可以看到底部,所以我得到了一个平滑的发展. (2认同)