我正在创建一个 webgl 游戏,我对其进行了相当好的优化,但是有一个问题,我的帧速率限制器破坏了性能。我知道你的想法“呃,当然是……它是一个 fps 限制器”。那么问题是它的行为没有达到预期。这是代码:
renderTimer = null;
function animate() {
clearTimeout(renderTimer);
renderTimer = setTimeout(function () {
_frame = requestAnimationFrame(animate);
}, 33);
render();
}
function render(){
// operations for mesh positioning/animation
handleObjects();
renderer.render(scene, camera);
}
在我的桌面上,这按预期工作,游戏流畅且保持在 29-30fps。
在我的笔记本电脑上 fps 下降到 22-24 并且游戏很生涩。如果我将间隔延迟更改为 16 毫秒,则游戏玩法相对流畅并保持在 35 fps 左右。如果我将所有时间间隔全部移除,则游戏完全流畅并保持在 45fps 左右。
我不完全理解这种行为。如果上限是 30fps,为什么我的笔记本电脑性能会下降到 25fps 以下?我希望它在没有间隔的情况下也是 25fps,但它会更快。好奇的。
我很乐意删除间隔,但我确实希望我的 fps 上限为 30,玩家获得更高的 fps 将具有优势。
想法?