2017-02-18 144 views
1

我一直在閱讀在線文檔,並通過一些android/OpenGL書籍進行瀏覽......並且它都提到了一種傳遞或委託事件處理程序調用GL渲染線程的方法是使用Android queueEvent(new Runnable (){...})從GLSurfaceView類..基於我卑微的java知識沒有任何意義..然後我發現這個問題GLSurfaceView.queueEvent does not execute in the GL thread 在你的意見有人證實我的疑惑,說調用runnable幾乎暗示你希望這個類的每個實例在單獨的線程中運行?另一個人說,這是不是在這種特殊情況下真實的,queueEvent需要的是可運行的,並運行它的現有渲染線程Android queueEvent(new Runnable())如果我有多個承載Renderer的線程,該怎麼辦?

如果第二個人是對的,我的問題是什麼?如果我有兩個單獨的線程執行GLRenderer ...在這種情況下,哪個線程將執行新的queueEvent(new Runnable())主機的代碼? 我很困惑。

回答

2

不知道在哪裏,或者如何(或甚至爲什麼)啓動另一個線程來運行Renderer類中的代碼,但無論如何,GLSurfaceView在調用setRenderer()時創建一個線程。 ,並保持對該線程的引用。您通常會調用queueEvent(new Runnable(){public void run(){mMyRenderer.DoSomething();});從GLSurfaceView中引用它創建的線程!不要緊,如果你有另一個線程,也承載你的渲染,它可能甚至不可見GLSurfaceView .. bottom-line ... queueEvent與GLSurfaceView引用(和創建)的線程工作

+1

這是有道理的.. 謝謝 –

相關問題