我正在用 JS 构建一个游戏,我在 Android Chrome 上对其进行了测试,发现它运行不顺畅,我可以看到卡顿。然后,我开始着手解决性能问题,因为我认为我的代码没有优化。
我开始使用 Chrome 的内置 FPS 计调试游戏,并注意到它以 30 FPS 的速度渲染。然后,我开始评论游戏的某些部分,直到我可以达到 60 FPS 但不能。最后,我留下了这段代码:
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext('2d');
ctx.fillStyle = 'red';
var loop = function() {
ctx.fillRect(0, 0, 10, 10);
console.log(new Date().getSeconds());
requestAnimationFrame(loop);
}
loop();
requestAnimationFrame
调用一个几乎为空的函数,但仍以 30 FPS 渲染。但是loop
函数每秒被调用 60 次。这是显示两者的屏幕截图:
你也可以在这里测试自己:https ://replit.com/@laltin/DearAmusingPackages
我的问题是为什么调用次数和渲染次数之间存在差异,requestAnimationFrame
我怎样才能让它以 60FPS 渲染?