如何创建EGL上下文?

时间:2011-11-10 09:37:47

标签: android-ndk

我有一个Android NDK应用程序,它在软件中进行所有渲染。 现在我想使用Open GL ES来进行渲染。

我通过调用EGL并创建一个PBuffer来运行单元测试。 现在我想在窗口而不是PBuffer中做所有事情。 我调整了hello-gl2示例中的代码。 我创建了一个使用GLSurfaceView而不是SurfaceView的新java文件。 我为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文件中进行一些更改吗? 请给我一些追求的路径。我只是陷入了死胡同。

1 个答案:

答案 0 :(得分:0)

事实证明线程存在问题:GL渲染线程和图形数据库线程都是死锁。这是我如何解决它。我将线程数减少了一个,并自己管理GL:

  1. 从SurfaceView而不是GLSurfaceView派生MyGLSurfaceView。
  2. 当调用MyGLSurfaceView.surfaceCreated()时,在全局范围内松开ANativeWindow(来自主线程)。
  3. 使用ANativeWindow在数据库线程中初始化EGL以创建EGLContext。