不使用GLSurfaceView时替换queueEvent

时间:2012-11-03 02:37:31

标签: android opengl-es surfaceview glsurfaceview

当从其他线程控制OpenGL时,如果它是GLSurfaceView,我们使用queueEvent()。然后,如果在SurfaceView上创建OpenGL(使用eglCreateWindowSurface,eglMakeCurrent等),我应该如何实现从其他线程操作OpenGL?

1 个答案:

答案 0 :(得分:1)

您可以实施自己的queueEvent

  1. 排队。 (ArrayList<Runnable> mQueue
  2. queueEvent()Runnable个实例添加到此队列(mQueue)。
  3. 您的SurfaceView渲染线程从队列中弹出event
  4. 调用event.run()
  5. 使用锁定(synchronized或显式锁定)来避免问题。

    GLSurfaceView中,GLThread循环中有3个和4个步骤,mQueuesynchronized块保护。

    另见:GLSurfaceView

    PS:抱歉我的英语很差。