当从其他线程控制OpenGL时,如果它是GLSurfaceView,我们使用queueEvent()。然后,如果在SurfaceView上创建OpenGL(使用eglCreateWindowSurface,eglMakeCurrent等),我应该如何实现从其他线程操作OpenGL?
答案 0 :(得分:1)
您可以实施自己的queueEvent
。
ArrayList<Runnable> mQueue
)queueEvent()
将Runnable
个实例添加到此队列(mQueue
)。SurfaceView
渲染线程从队列中弹出event
。event.run()
使用锁定(synchronized
或显式锁定)来避免问题。
在GLSurfaceView
中,GLThread循环中有3个和4个步骤,mQueue
受synchronized
块保护。