1 获取帧率的基本原理
1.1 了解requestAnimationFrame
requestAnimationFrame是专门为创建脚本式动画而设计的。 比起 setTimeout、setInterval的优势主要有两点:
1、requestAnimationFrame 会把每一帧中的所有DOM操作集中起来,在一次重绘或回流中就完成,并且重绘或回流的时间间隔紧紧跟随浏览器的刷新频率,一般来说,这个频率为每秒60帧。
2、在隐藏或不可见的元素中,requestAnimationFrame将不会进行重绘或回流,这当然就意味着更少的的cpu,gpu和内存使用量。
1.2 requestAnimationFrame 的使用方法
requestAnimationFrame()方法很容易使用。只需要把绘制回调函数作为它的第一个参数传入,就可以调用这个回调函数。假设回调函数是draw(),则它的调用方法如下:
requestAnimationFrame(draw) ;
当WebGL应用程序调用这个回调函数时,就把当前时间作为参数传给它。当前时间在动画循环中很有用,因为它常用来计算绘制上一帧绘制后已经过去了多少时间,然后补偿由于帧频的波动而受影响对象的运动。在本章后面我们还将