0

そのため、私のゲームでは、ビューに一貫性のないレートが描画されます。これにより、グリッチが発生します。私はinvalidate()で多くの問題に遭遇してきました。ミートホッド。簡単なアイデア-どこを見ても、大量の強力なコードに夢中になります。

4

2 に答える 2

2

あなたは私たちに多くの情報、特にコードを提供していません。

あなたができるいくつかのことは次のとおりです。

  1. 初期フレームレートを、アプリケーションの実行を観察する最低値に設定します。つまり、現在1/60に設定されているが、フレームレートが継続的に1/30に低下する場合、1/30に設定される場合などです。
  2. より効率的にするために、描画呼び出しを作り直します。
  3. 行列を乗算して、複数の変換を1つの変換に結合してみてください。つまり、スケーリング、変換、回転が必要な場合は、3つの個別の変換を適用する代わりに、これら3つの行列を乗算して、その1つの変換を頂点に適用します。
  4. 不要な場合は、リスト/配列全体を反復処理しないようにしてください。
  5. 開梱のオーバーヘッドを回避するために、ループ内で処理する必要のあるものすべてに対して、可能な限り最低レベル/最も原始的な構造を使用してみてください。

[2012-08-27に編集]

タイムステップを修正するための役立つリンク:http://gafferongames.com/game-physics/fix-your-timestep/

于 2012-04-18T20:18:12.583 に答える
1

ゲームループでは、反復の間に経過した実際の時間が考慮されていないようです。

問題は、ループの反復間に一定の時間が存在するという仮定です。ただし、この時間は、シーン内のオブジェクトの数、コンピューター上の他のプロセス、またはコンピューター自体によっても変動する可能性があります。

これは、ゲームプログラミングでよくある、やや微妙な間違いですが、簡単に修正できます。秘訣は、各描画ループの終了時に時刻を保存し、最後の更新と開始時の現在の時刻との差をとることです。次に、実際の経過時間に基づいて、すべてのアニメーションとゲームの変更をスケーリングする必要があります。

これについては、しばらく前にブログに書いています:http: //laststop.spaceislimited.org/2008/05/17/programming-a-pong-clone-in-c-and-opengl-part-i //

パートIIは特にこの問題をカバーしています:http: //laststop.spaceislimited.org/2008/06/02/programming-pong-in-c-and-opengl-part-ii/

于 2012-04-18T21:50:17.157 に答える