requestAnimationFrame
現在、 (理想的には)60FPSで実行されるWebGLコンテンツをレンダリングしています。また、を使用してAIや物理などを処理する「更新」プロセスも同時にスケジュールしていsetTimeout
ます。後者を使用するのは、オブジェクトを1秒間に約30回更新するだけでよく、実際には描画シーケンスの一部ではないためです。私のアニメーションのほとんどはかなりハードウェアを集中的に使用するため、実際のレンダリングパスのために残りのCPUを節約することは良い考えのように思えました。
私の質問はベストプラクティスの1つです。setTimeout
またsetInterval
、特にブラウザにフォーカスがない場合は、バッテリーの寿命やCPUの消費量に特に優しいわけではありません。一方、使用するrequestAnimationFrame
(または更新を既存のレンダリングフェーズに直接結び付ける)と、厳密に必要な数よりもはるかに多くの更新が毎秒強制される可能性があり、ブラウザーにフォーカスがない場合やブラウザーが判断した場合は、更新が完全に停止する可能性があります。 「アニメーション」には不要です。
コンテンツをレンダリングせずに更新するための最善の行動は何ですか?