【问题标题】:Android: Called Unimplemented OpenGL ES API at glMapBufferOES for OGL ES.1.1Android:在 glMapBufferOES 为 OGL ES.1.1 调用未实现的 OpenGL ES API
【发布时间】: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


    【解决方案1】:

    您所说的入口点在 OpenGL ES 1.1 中不可用。但是扩展名GL_OES_mapbuffer 可能可用。我建议您查询glGetString(GL_EXTENSIONS) 以获取字符串GL_OES_mapbuffer。然后,如果可用,请使用:

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

    然后尝试调用这个入口点。

    【讨论】:

    • 我认为你是对的,但在 Nexus 4/5 上,GL_OES_mapbuffer 不在可用的扩展中。然而,它在 Nexus S 上(为什么?)。也许我应该尝试在大多数安卓设备上工作的 glMapBufferOES 的替代品......但我想这是另一个问题。
    • 这很奇怪,如果您查看gfxbench.com/… 并打开 OpenGL ES 2.0 选项卡,您可以在列表中看到 GL_OES_mapbuffer。也许扩展会根据 GL 版本而改变?您可以随时检查入口点是否存在并忽略字符串检查。
    • 是的,实际上它适用于 NexusS,但不适用于 nexus 4/5,事实上该扩展在 nexus 4/5 上不可用,所以它是连贯的。最后,我所做的是将 glMapBuffer + memcpy 的调用替换为 glBufferSubdata 调用。由于 glBufferSubdata 不是扩展,它应该适用于所有支持 GL 的设备。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 2011-06-14
    相关资源
    最近更新 更多