1

基本サンプルを実行する場合: http://android-developers.blogspot.com/2009/04/introducing-glsurfaceview.html

System.currentTimeMillis() を使用して基本的なタイミングを追加するか、ネイティブ コードにドロップして clock_gettime(CLOCK_REALTIME_HR, &res) を使用すると、表示されるのと同じ結果が得られます。両方を別々にテストしました。

私は常にフレームレートを ~56 と計算しています。これは、フレーム間のおおよその平均 18 ミリ秒です。フレームのタイミングは完全な科学ではないことを認識しています(タイマーの精度、バックグラウンドで何かを実行しているデバイス)。glClearでさえも、まったく何もせずに実行させました。1 時間後に得られた結果は、1 分間実行した場合とほぼ同じです。

真の 59/60 fps を実現するために多くのことを試しました。自分のデバイス (HTC Incredible S) ではないかと考え始めています。Samsung Galaxy S と Nexus S の両方を試しましたが、結果は同じでした。タブレットでは、この動作はまったく見られません。私の EEE Transformer と Xoom では、1 フレームあたり一貫して 16 ミリ秒を取得します。

これにより、VSYNC が問題であり、その世代の Android フォンの vsync が遅いと思われます。本当に VSYNC は ~16ms のはずです。真の 60 fps を達成することはまずありませんが、59 fps は一般的なはずです。

他の誰かがこれを経験しましたか?vsync を無効にするためのヒントはありますか? それは不可能だと思います。レンダリングの「スワップ」ステップを制御するためのヒントはありますか?

4

0 に答える 0