2

v-syncをオンにしてOpenGLフレームレートのタイミングを調整していますが、タイミングがモニターで設定された正確な周波数ではないことに気付きました。つまり、デスクトップでは60Hzの更新がありますが、FPSは59.88で安定しています。一方、タブレットでは60Hzですが、FPSは61/62FPSになる可能性があります。何がこれらのわずかな逸脱を正確に引き起こしているのか知りたいです。

これらは私がこれまでに持っていたアイデアです:

  1. ドロップされたフレーム:これは明白な答えです:私はいくつかのフレームが欠落しているだけです。ただし、フレームをドロップしていないことを確認できるため、これは原因ではありません。これが発生した場合、FPSのドロップは大きくなります。120フレームを超える時間を計算するので、1フレームが失われると、FPSはデスクトップで59.5を下回ります。
  2. 不正確なタイミング:clock_gettimeを使用してタイミングを取得します。Linuxでは、これが十分に正確であることを私は知っています(以前はナノ秒ベースのタイミングを使用していましたが、ここでは+/-数百マイクロ秒で生きることさえできます)。ただし、Androidの場合、これが正確かどうかはわかりません。
  3. APIの奇妙さ:デスクトップではglXSwapBuffersを使用し、AndroidではeglSwapBuffersを使用しています。ここでは奇妙なことがあるかもしれませんが、これがフレームレートにどのように微妙に影響するかはわかりません。
  4. 概算Hz:これは、ビデオカード/モニターが実際には60Hzで動作していないという私の最大の推測です。これはおそらく、モニターの正確な速度とビデオカードの周波数に関係しています。これは具体的に判断できるもののようですが、どのツールを使ってこれを行うことができるのかわかりません。(更新:Linuxの現在のビデオモードは59.93Hzを示しているので、非常に近いですが、まだそこにはありません)

答えが確かに#4である場合、これはおそらく質問の最良の交換サイトではありません。しかし、すべての場合において、私の最終的な目標は、実際の理想的なリフレッシュレートをプログラムで把握することです。ですから、誰かが私の考えを確認/否定し、必要な情報を入手するための正しい方向に私を向けてくれることを願っています。

4

0 に答える 0