1

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

4

1 に答える 1

1

独自の を実装できますqueueEvent

  1. キューを作成します。( ArrayList<Runnable> mQueue)
  2. queueEvent()Runnableインスタンスをこのキューに追加します( mQueue)。
  3. のレンダリングSurfaceViewスレッドがeventキューからポップします。
  4. 呼び出すevent.run()

問題を回避するには、ロック (synchronizedまたは明示的なロック) を使用します。

ではGLSurfaceView、GLThread のループに 3 つと 4 つのステップがあり、ブロックmQueueによって保護されています。synchronized

参照: GLSurfaceView

PS: 下手な英語で申し訳ありません。

于 2012-11-27T16:10:57.133 に答える