他のスレッドから OpenGL を制御する場合、GLSurfaceView であれば queueEvent() を使用します。では、SurfaceView で OpenGL を作成する場合 (eglCreateWindowSurface や eglMakeCurrent などを使用)、他のスレッドから OpenGL を操作するにはどのように実装すればよいでしょうか?
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 に答える