Android如何有效地处理OpenGL线程中的Touchevent?

时间:2017-07-12 21:46:11

标签: android performance opengl-es ontouchevent

我像这样处理我的onTouchEvent:

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

我必须将调用排入我的GL线程,因为我想只在用户触摸并且与游戏相关的内容发生变化时才更新大部分内容。

然而,queueEvent解决方案似乎有点慢。 MainActivity的onTouchEvent与Renderer的onTouchEvent之间需要10-15ms。是否可以在不直接传递onTouchEvent的情况下实现更低的延迟?

1 个答案:

答案 0 :(得分:0)

如果您这样考虑,10-15 ms意味着您将能够从当前用户输入中绘制下一帧。在60fps(Android默认值),每帧之间16毫秒。它必须使输入与渲染器同步,并且它不能随时干扰。当然,您可以以同步方式更改渲染器内的值,但仍然只能在下一帧中绘制,这可能需要花费很长时间。