如果不支持EGL_NATIVE_RENDERABLE,如何通过C ++ / NDK访问OpenGL ES 2?

时间:2012-06-11 13:52:46

标签: android c++ opengl-es android-ndk opengl-es-2.0

我的应用程序(用C ++编写,带有Java引导程序代码)在我的Android MID设备上运行完美,但它不适用于朋友的Moto MB865手机。 在使用GL上下文创建过程进行挖掘之后,我发现EGL_NATIVE_RENDERABLE对于支持OpenGL ES 2.0的所有配置都是GL_FALSE

这意味着我无法使用我的本机代码访问OpenGL ES 2.0。

为什么系统有这个奇怪的限制?我认为本机代码可以在此之前访问所有OpenGL配置。

有没有办法解决这个限制?或者我是否必须编写代理才能通过JNI访问EGL2?

1 个答案:

答案 0 :(得分:2)

EGL_NATIVE_RENDERABLE与NDK无关。

它只是表明本机渲染API能够绘制到缓冲区。

参考EGL规范:http://www.khronos.org/registry/egl/specs/eglspec.1.4.pdf2.2.3 Interaction With Native Rendering段:

  

像素图表面始终支持本机渲染(对于   本机渲染API可以绘制到本机像素图的程度)。点阵图   表面通常在混合本机API和客户端API时使用   渲染是可取的,因为不需要在它们之间移动数据   后台缓冲区对客户端API和本机像素图可见   对本机渲染API可见。但是,pixmap表面可能适合   同样的原因,相对的能力和性能受到限制   到窗口和pbuffer表面。不支持本机渲染   通过pbuffer表面,因为分配了pbuffers的颜色缓冲区   由EGL内部提供,无法通过任何其他方式访问。

您的问题的原因应该是不同的(GLES 2.0不受支持等)。