0

私のopenglアプリケーションでラグが繰り返し発生しています。win32 API を使用してウィンドウを作成し、2.2 コンテキストも作成しています。したがって、プログラムのメイン ループは非常に単純です。

  • カラーバッファのクリア
  • 三角形を描く
  • バッファを交換します。

三角形が回転している、それがラグを見る方法です。また、私のフレーム時間はスムーズではないため、問題が発生する可能性があります。しかし、私は多くの方法を試したので、デルタ時間の計算が正しいと確信しています。

グラフィックドライバの問題である可能性があると思いますか? 私の友人は、計算が少ないことを除いてほぼまったく同じプログラムを実行しているため、+標準のopenglシェーダーを使用しています。また、彼のプログラムは私のものよりも多くの CPU パワーを使用し、CPU の割合は私のものよりスムーズです。

また、追加する必要があります。ラップトップでは、1秒ごとに同じラグが発生するため、ある種のパターンを見ることができます.

4

1 に答える 1

1

フレーム レートが不安定になる理由は多数あります。私の頭の上から:

  • 各フレームの最後に glFlush() を呼び出さない
  • 他の実行中のソフトウェアが干渉している
  • 特定のグラフィックス ドライバーが好まないことをコード内で行う
  • グラフィックドライバーのバグ
  • ひどい解像度で標準のWindows時間機能を使用する

これらを試してください:

  • できるだけ多くの実行中のプログラムを殺します。これには、タスク マネージャの [プロセス] タブ ( CTRL- SHIFT- ESC) を使用します。
  • 少しずつ、プログラムが実行している作業量を減らし、それがフレーム レートと表示の滑らかさにどのように影響するかを確認します。
  • 可能であれば、垂直同期を有効/無効にしてみてください (グラフィック カードの設定でこれを行うことができる場合があります)。
  • 各フレームの描画にかかった時間を出力するデバッグ コードを追加し、数値に異常がないかどうかを確認します。たとえば、20 番目のフレームごとに 20 ミリ秒余分にかかったり、ランダム フレームに 100 ミリ秒かかったりします。
于 2012-04-04T12:15:39.000 に答える