【发布时间】:2014-09-14 08:36:19
【问题描述】:
我正在开发一个从 iOS 到 Android NDK 的 OpenGL ES 1.1 应用程序的端口。 我用我的 Nexus S 设备测试了端口,它工作正常,但是当我在较新的设备(例如 Nexus 4 和 5,但对于其他较新的设备它发生相同)上测试它时,出现了错误
Called unimplemented OpenGL ES API
调用时:
vbo_buffer = (GLchar*)glMapBufferOES(GL_ARRAY_BUFFER, GL_WRITE_ONLY_OES);
不过,对于其他 gl 调用没有问题。
详情:
我使用带有 glext 包的 OpenGL ES 1.1。如果我打印 opengl 版本,它会说:
07-23 10:32:51.804: D/ES1Renderer(32097): OpenGL ES Version: OpenGL ES-CM 1.1
在 Android.mk 中:
LOCAL_LDLIBS := -llog -lGLESv1_CM -lz
在清单中:
<uses-feature android:glEsVersion="0x00010001" android:required="true" />
我使用从java到C/C++ OpenGL的GLSurfaceView方法,这里是初始化
public void initGLView() {
glView = new EAGLView(getActivity(), null);
glView.setEGLContextClientVersion(1);
glView.setRenderer(new ES1Renderer(glView));
}
作为 GLSurfaceView 和 ES1Renderer 的 EAGLView 子类正在实现 GLSurfaceView.Renderer。
我还应该设置什么来告诉设备使用 OGL ES 1.1?我不明白为什么它在旧设备上运行良好,但在新设备上却失败了。
【问题讨论】:
标签: c++ opengl-es android-ndk opengl-es-1.1