Android: называется не реализованным API OpenGL ES в glMapBufferOES для OGL ES.1.1

Я работаю над портом от 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? Я не понимаю, почему он работает нормально на старых устройствах, но не работает на более новых.

1

Решение

Точка входа, о которой вы говорите, недоступна в OpenGL ES 1.1. Однако расширение, GL_OES_mapbuffer может быть доступно. Я бы предложил вам запрос glGetString(GL_EXTENSIONS) для строки GL_OES_mapbuffer, Тогда, если это возможно, используйте:

typedef void * (*MapBufferOESType)(GLenum, GLenum);
MapBufferOESType MapBufferOES = (MapBufferOESType)eglGetProcAddress("MapBufferOES");

Затем попробуйте вызвать эту точку входа.

0

Другие решения


По вопросам рекламы [email protected]