1

これは私には意味がありませんでした。GLFW と Three.js の例と、実際にこのコメントが含まれている Cinder の実装を調べました。

すべてのウィンドウを描画可能としてマークします。これは、draw() の前に最初の update() が確実に実行されるようにするために、最初にのみ重要です。

3 つのライブラリすべてがそれを行っているようですが、その理由がわかりません。画面に一度も描画されていないもののie位置を更新しても意味がありませんか、それともありますか?

私のループは次のようになります。

  1. (最初の) フレームを描画する
  2. バッファを交換する
  3. 更新イベント
  4. アニメーション化 (イベントからの入力を使用)、ロジックの更新、...
  5. 上から始める

この順序は私にとってより理にかなっていますが、何かが足りないのかもしれません。

4

1 に答える 1

1

最初にオブジェクトを更新してから描画するのは理にかなっていると思います。

振り子のように、画面の一方の端からもう一方の端に移動して戻ってくるボールをアニメートすると想像してください。また、実際にコンピューターにリアルタイムを反映させたいと想像してみてください。ボールの位置を更新する前にシーンを描画すると、ボールは最初のフレームのどこに配置されますか? 手動で初期位置を設定しない限り、シーンのゼロ点になり、意図した軌道から完全に外れている可能性があります。アニメーションの開始前にその位置を初期化することにした場合、時間のギャップが発生し、間違った位置になることもあります。

ただし、描画する前に常に位置を更新すると、最初にレンダリングされたフレームから正しい場所になります。

しかし、正直なところ、最初のフレームに気付く人はおそらくいないでしょう。そのため、実際的な理由というよりも、そのようにするのが理にかなっているのです。シーンを描画する前に準備する方が理にかなっていると思いますが、その逆ではありません。

于 2014-03-19T14:37:03.743 に答える