Android:调用未实现的OpenGL ES API在glMapBufferOES为OGL ES.1.1



我正在制作一个OpenGL ES 1.1应用程序从iOS到Android NDK的端口。我用我的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与gleext包。如果我打印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));
}

作为GLSurfaceView的子类,ES1Renderer实现了GLSurfaceView. renderer。

还有什么我应该设置告诉设备使用OGL ES 1.1?我不明白为什么它在旧设备上工作得很好,但在新设备上却失败了。

您正在谈论的入口点在OpenGL ES 1.1中不可用。然而,扩展GL_OES_mapbuffer可能可用。我建议您查询字符串GL_OES_mapbufferglGetString(GL_EXTENSIONS)。如果有的话,使用:

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

相关内容

  • 没有找到相关文章

最新更新