4

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

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

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

有没有办法解决这个限制?还是我必须编写一个委托才能通过 JNI 访问 EGL2?

4

1 回答 1

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 可见的本地像素图之间移动数据。然而,出于同样的原因,像素图表面相对于窗口和 pbuffer 表面可能具有受限的功能和性能。pbuffer 表面不支持原生渲染,因为 pbuffer 的颜色缓冲区是由 EGL 在内部分配的,并且无法通过任何其他方式访问。

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

于 2012-09-20T15:21:47.407 回答