我正在制作一个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-30帧每秒的速度。
但是在我的笔记本电脑上,帧率会降至22-24,并且游戏体验不顺畅。如果我将间隔延迟时间更改为16ms,则游戏体验相对流畅,保持在约35fps左右。如果完全删除间隔,则游戏体验完全流畅,保持在约45fps左右。
我并不完全理解这种行为。如果帧率设定为30fps,那么为什么我的笔记本电脑表现会低于25fps?我期望它没有间隔时间时也应该是25fps,但事实上它更快了。有点好奇。
虽然我很乐意去掉间隔时间,但我确实希望我的帧率限制为30fps。因为一些玩家比其他玩家拥有更高的帧率,这会使他们处于优势地位。
你有什么想法吗?
setTimeout(function () { requestAnimationFrame(animate); }, 1000/60); //进行渲染 }`
- Ravi Gidwani