我的应用程序(用C ++编写,带有Java引导程序代码)在我的Android MID设备上运行完美,但它不适用于朋友的Moto MB865手机。
在使用GL上下文创建过程进行挖掘之后,我发现EGL_NATIVE_RENDERABLE
对于支持OpenGL ES 2.0的所有配置都是GL_FALSE
这意味着我无法使用我的本机代码访问OpenGL ES 2.0。
为什么系统有这个奇怪的限制?我认为本机代码可以在此之前访问所有OpenGL配置。
有没有办法解决这个限制?或者我是否必须编写代理才能通过JNI访问EGL2?
答案 0 :(得分:2)
EGL_NATIVE_RENDERABLE
与NDK无关。
它只是表明本机渲染API能够绘制到缓冲区。
参考EGL规范:http://www.khronos.org/registry/egl/specs/eglspec.1.4.pdf
第2.2.3 Interaction With Native Rendering
段:
像素图表面始终支持本机渲染(对于 本机渲染API可以绘制到本机像素图的程度)。点阵图 表面通常在混合本机API和客户端API时使用 渲染是可取的,因为不需要在它们之间移动数据 后台缓冲区对客户端API和本机像素图可见 对本机渲染API可见。但是,pixmap表面可能适合 同样的原因,相对的能力和性能受到限制 到窗口和pbuffer表面。不支持本机渲染 通过pbuffer表面,因为分配了pbuffers的颜色缓冲区 由EGL内部提供,无法通过任何其他方式访问。
您的问题的原因应该是不同的(GLES 2.0不受支持等)。