現在、私は(理想的には)60 FPSで動作するを使用してWebGLコンテンツをレンダリングしています。また、setTimeout
を使用してAI、物理などを処理する「更新」プロセスを同時にスケジューリングしています。後者は、オブジェクトを1秒間に約30回更新する必要があり、実際には描画シーケンスの一部ではないため、後者を使用します。ほとんどの私のアニメーションはかなりハードウェアが集中しているので、実際のレンダリングパスの残りのCPUを節約するのは良い考えでした。JS/WebGLの更新 "スレッド"
私の質問はベストプラクティスの1つです。 setTimeout
とsetInterval
は、特にブラウザにフォーカスがない場合は、バッテリの寿命やCPU消費量にはあまり関係しません。一方、を使用するか(または既存のレンダリングフェーズに直接更新を関連付ける)、毎秒厳密に必要な更新よりもずっと多くの更新を強制し、ブラウザにフォーカスがないときやブラウザが他の時に更新を停止する可能性があります「アニメーション」には不要とみなされます。
のコンテンツを更新するのに、のコンテンツは表示されません。
ありがとうございます!私がレンダリングループに直接接続することについて考えることができる唯一の欠点は、ユーザーがタブを切り替えたときに更新が一時停止する可能性があることです。しかし、今考えているのは好ましい結果かもしれません(タブを切り替えた彼らは明らかにユーザーとして、アップデートの恩恵を受ける立場にない)。バックグラウンドで更新する必要があるものは、それだけで独自の間隔に入ることができます。 – sinisterchipmunk