2011-11-10 24 views
0

我有一個Android NDK應用程序正在使用軟件進行所有的渲染。 現在我想使用Open GL ES來進行渲染。如何導致創建EGL上下文?

我已經通過調用EGL和創建一個PBuffer來運行單元測試。 現在我想在窗口而不是PBuffer中做所有事情。 我修改了hello-gl2示例中的代碼。 我創建了一個新的java文件,使用GLSurfaceView而不是SurfaceView。 我已經爲GLSurfaceView創建了一些原生函數。 我已成功從Java調用C,並已成功從C調用Java。

仍然沒有圖片。

我跟蹤了Eclipse並得到一個錯誤,說GL調用沒有當前上下文。我在做 setEGLContextFactory(new ContextFactory()); setEGLConfigChooser(半透明?新ConfigChooser(8,8,8,8,0,0): 新的ConfigChooser(5,6,5,0,0,0)); setRenderer(new Renderer()); 但是, ConfigChooser.chooseConfig() 永遠不會被調用。誰應該這樣稱呼?示例代碼沒有提供任何線索。

我是否還需要對XML文件進行一些更改? 請給我一些追求路徑的想法。我只會陷入死衚衕。

回答

0

事實證明,線程存在問題:GL渲染線程和圖形數據庫線程死鎖。這是我如何解決它。我減少了一個線程數,並且自己管理GL:

  1. 從SurfaceView派生MyGLSurfaceView而不是GLSurfaceView。
  2. 當調用MyGLSurfaceView.surfaceCreated()時,在全局中鬆開ANativeWindow(來自主線程)。
  3. 使用ANativeWindow在數據庫線程中初始化EGL以創建EGLContext。