Я работаю над портом с 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 проблем нет.
Подробности:
Я использую OpenGL ES 1.1 с пакетом glext. Если я печатаю версию 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" />
Я использую подход GLSurfaceView из java в C/C++ OpenGL, и вот инициализация
public void initGLView() {
glView = new EAGLView(getActivity(), null);
glView.setEGLContextClientVersion(1);
glView.setRenderer(new ES1Renderer(glView));
}
Будучи подклассом EAGLView GLSurfaceView и ES1Renderer, реализует GLSurfaceView.Renderer.
Есть ли что-то еще, что я должен установить, чтобы устройство использовало OGL ES 1.1? Не понимаю, почему на старых устройствах работает нормально, а на новых не работает.