eclipse中未定义的引用glBindVertexArrayOES,glGenVertexArraysOES,glDeleteVertexArraysOES

时间:2013-01-18 20:07:23

标签: opengl-es android-ndk

尝试使用Android NDK编译C ++代码,但这些错误不会消失

undefined reference to glBindVertexArrayOES
undefined reference to glGenVertexArraysOES
undefined reference to glDeleteVertexArraysOES 

在.mk文件中写道

LOCAL_LDLIBS := -lGLESv1_CM -ldl -llog -lz  -landroid -lEGL

完全找到所有其他功能,我是否需要声明任何可以使这些功能正常工作?

1 个答案:

答案 0 :(得分:2)

此函数不是基本的opengl es规范,因此默认情况下不会定义它们,而是作为扩展名提供。

如果您使用的设备支持此扩展,您可以获取函数的phsical地址并通过函数指针使用它。

应该看起来像这样:

PFNGLGENVERTEXARRAYSOESPROC glGenVertexArraysOES;
PFNGLBINDVERTEXARRAYOESPROC glBindVertexArrayOES;
PFNGLDELETEVERTEXARRAYSOESPROC glDeleteVertexArraysOES;
PFNGLISVERTEXARRAYOESPROC glIsVertexArrayOES;

glGenVertexArraysOES = (PFNGLGENVERTEXARRAYSOESPROC)eglGetProcAddress ( "glGenVertexArraysOES" );
glBindVertexArrayOES = (PFNGLBINDVERTEXARRAYOESPROC)eglGetProcAddress ( "glBindVertexArrayOES" );
glDeleteVertexArraysOES = (PFNGLDELETEVERTEXARRAYSOESPROC)eglGetProcAddress ( "glDeleteVertexArraysOES" );
glIsVertexArrayOES = (PFNGLISVERTEXARRAYOESPROC)eglGetProcAddress ( "glIsVertexArrayOES" );

比你可以使用这些功能。只是不要忘记这个绑定发生在运行时,所以检查是否支持这个功能是一个好主意。如果设备不支持,则指针将为0。