【发布时间】:2014-09-12 13:29:10
【问题描述】:
我正在尝试编写一些在 C++ 中使用 VAO 的代码,并使用 Android NDK 进行编译。我希望能够使用glDeleteVertexArraysOES、glGenVertexArraysOES 和glBindVertexArrayOES。
我将 OpenGL ES 2 的标头和我的标头中的扩展包括在内。
#define GL_GLEXT_PROTOTYPES
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
我还在 Android.mk 中链接到 OpenGL ES 2。
LOCAL_LDLIBS += -lGLESv2
但由于某种原因,在链接代码时,它会失败。
undefined reference to 'glDeleteVertexArraysOES'
undefined reference to 'glGenVertexArraysOES'
undefined reference to 'glBindVertexArrayOES'
链接器是否不包括GLES2/gl2ext.h?
【问题讨论】:
-
我检查了 NDK 库,发现这些调用的唯一库(在 Linux 上使用
nm命令)是 GLESv3 库。它显然有名称中没有OES的调用,因为这是 ES 3.0 中的核心功能。但是OES的表单在同一个库中。我觉得这有点令人费解。我想您可以尝试在LOCAL_LDLIBS的末尾添加-lGLESv3,看看是否会发生可怕的事情。总的来说,这绝对不是一个好主意。 -
有趣的是,-lGLESv3 确实有效。我的问题:我想在不支持 OpenGL ES 3 的模拟器上运行它。
标签: android c++ opengl opengl-es android-ndk