3

私は 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 を取得するプレイヤーが有利になります。

考え?

4

1 に答える 1