0

正確で非常に短い時間間隔で画面に何かを表示する必要があります。リフレッシュレートが固定されている(そしてこのタスクでは比較的遅い)モニターで作業する必要があるため、それが制限要因になります-そして、ユーザーが表示時間をいくつかの「フレーム」(= 16、 (60Hz モニターの場合は 6ms)。

私はもともと正確なタイマー(ストップウォッチクラスに基づく)を使用することだけを考えていましたが、問題は、実際に表示されたフレームの数を知る方法(私が知っている)がないことです.リフレッシュ 16,6ms 間隔が私の21ミリ秒間隔。

これはおそらく directX/opengl/etc の Vsync で実行できることはわかっていますが、可能であれば単純な Windows フォームを使用したいと考えています。それで、しばらくしてから表示されたフレームの数を調べる方法、またはモニターに描画された新しいフレームのイベントを傍受する方法、またはフレームの再描画などを手動で注文する方法はありますか?

4

1 に答える 1

1

「モニターフレーム」とはどういう意味ですか?

モニターのリフレッシュ レートを測定する場合、測定することはあまりありません。これは固定数であり、モニターのモデルとディスプレイの設定によって異なります。調べるか、win api 呼び出しを使用してプログラムで取得できます: http://msdn.microsoft.com/en-us/library/dd162611%28v=VS.85%29.aspx。リフレッシュ レートは、ソフトウェアの影響を受けません。

fps を測定する場合は、タイマー (例: StopWatch) とフレーム カウントが必要です。画面を更新するたびに変数をインクリメントすることで、後者を取得できます。OnPaintフォームのメソッドは、おそらくそれを行うことができる場所の 1 つです。Fps はモニターの影響を受けません (VSync を有効にしない限り)。

リフレッシュ レートが遅いためにスキップされたフレームを除いて fps を測定する場合は、リフレッシュ レートが fps よりも低い場合はこの値がリフレッシュ レートに等しく、リフレッシュ レートが低い場合は fps に等しいと仮定しても安全だと思います。 fpsより高いです。

于 2013-10-28T11:30:32.183 に答える