在使用OpenGL ES 3功能时在Android上发生分段错误

问题描述:

我正尝试使用NDK创建应用程序。我使用的是ndk-build,因为我还在使用一些尚不支持CMake的外部库。这是Android.mk相关线路:在使用OpenGL ES 3功能时在Android上发生分段错误

LOCAL_LDLIBS := -lEGL -lGLESv3 

一切构建(编译和链接)就好了,但是当我尝试使用从OpenGL ES的函数3.0+(如glGenVertexArrays),我得到一个分段错误。

当我看到进入调试器,不过,我看到:

enter image description here

因此,它是连接对libGLESv1_CM.so的原因,我不明白。

此外,在我的头文件中,我有#include <GLES3/gl3.h>,我的设备支持OpenGL ES 3.2(我也看到了/system/lib/上的libGLESv3.so文件)。

我可能会错过什么?

+0

glBindBuffer由ES 1.1定义。我不会为此担心。 – Andreas

+0

来自opengl的运行时段错误通常是由于坏指针造成的。你确定你在glGenVertexArrays中发送了好的指针,也就是预先分配的内存大小为n * GLuint的地址? – Andreas

+0

完全确定。而且,你可以看到函数指针被设置为NULL。 –

我使用的外部库包含源gl3stub.c,大概是为了支持较老的OpenGL ES规范。这无效了指向新API的指针。删除此源并重新编译外部库解决了此问题。