gpt4 book ai didi

c++ - 安卓 : Called Unimplemented OpenGL ES API at glMapBufferOES for OGL ES. 1.1

转载 作者:太空宇宙 更新时间:2023-11-04 13:48:01 28 4
gpt4 key购买 nike

我正在开发从 iOS 到 Android NDK 的 OpenGL ES 1.1 应用程序的端口。我用我的 Nexus S 设备测试了这个端口并且它工作正常,但是当我在较新的设备(例如 Nexus 4 和 5,但对于其他较新的设备它发生相同)上测试它时出现错误

调用未实现的 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

在 list 中:

<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 的 EAGLView 子类,ES1Renderer 正在实现 GLSurfaceView.Renderer。

我还应该设置什么来告诉设备使用 OGL ES 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");

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

关于c++ - 安卓 : Called Unimplemented OpenGL ES API at glMapBufferOES for OGL ES. 1.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24905759/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com