私は webgl ゲームを作成しています。かなり最適化されていますが、フレームレート リミッターがパフォーマンスを低下させるという 1 つの問題があります。「もちろん、それは... 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 fps で保持されます。
私のラップトップでは、fps が 22 ~ 24 に低下し、ゲームプレイがぎこちなくなります。間隔の遅延を 16 ミリ秒に変更すると、ゲームプレイは比較的スムーズで、約 35 fps を維持します。インターバルをすべて削除すると、ゲームプレイは完全にスムーズになり、約 45 fps を維持します。
私はこの振る舞いを完全には理解していません。上限が 30 fps の場合、ラップトップのパフォーマンスが 25 fps を下回るのはなぜですか? インターバルなしでも25fpsになると思いますが、それでも速くなります。奇妙。
喜んで間隔を削除しますが、fps を 30 に制限したいので、それよりも高い fps を取得するプレイヤーが有利になります。
考え?