2017-07-12 22 views
0

私はこのように私のonTouchEventを扱う:Android ToucheventをOpenGLスレッドで効率的に処理する方法は?

public boolean onTouchEvent(MotionEvent event) 
{ 
    queueEvent(new Runnable(){ 
     public void run(){ 
     mRenderer.onTouchEvent(event); 
     } 
    }); 
    return true; 
} 

私は唯一のユーザーが触れるとゲーム関連のものが変化した場合のもののほとんどを更新したいので、私のGLスレッドにコールをキューイングしなければなりません。

ただし、queueEventソリューションは少し遅いようです。 MainActivityのonTouchEventとmy RendererのonTouchEventの間には10〜15msかかります。 onTouchEventを直接渡すことなく遅延を減らすことは可能ですか?

+0

これが役立つかどうかわかりませんが、私はonTouchEventをGLSurfaceViewからMainActivityに移動しなければなりませんでした。また、trueを返すと、ドラッグイベントが許可され、ドラッグイベントが処理されない場合はfalseが返されます。 – WLGfx

答えて

0

このように考えると、10〜15 msは、現在のユーザー入力から次のフレームを描画できることを意味します。 60fps(アンドロイドデフォルト値)では、各フレーム間で16msです。入力をレンダラーと同期させる必要があり、いつでも干渉することはできません。もちろん、レンダラー内の値を同期させて変更することもできますが、次のフレームでのみ描画することができます。これにはあまり時間がかかることもあります。

関連する問題