他のスレッドから OpenGL を制御する場合、GLSurfaceView であれば queueEvent() を使用します。では、SurfaceView で OpenGL を作成する場合 (eglCreateWindowSurface や eglMakeCurrent などを使用)、他のスレッドから OpenGL を操作するにはどのように実装すればよいでしょうか?
質問する
846 次
1 に答える
1
独自の を実装できますqueueEvent
。
- キューを作成します。(
ArrayList<Runnable> mQueue
) queueEvent()
Runnable
インスタンスをこのキューに追加します(mQueue
)。- のレンダリング
SurfaceView
スレッドがevent
キューからポップします。 - 呼び出す
event.run()
問題を回避するには、ロック (synchronized
または明示的なロック) を使用します。
ではGLSurfaceView
、GLThread のループに 3 つと 4 つのステップがあり、ブロックmQueue
によって保護されています。synchronized
参照: GLSurfaceView
PS: 下手な英語で申し訳ありません。
于 2012-11-27T16:10:57.133 に答える