Opengl es eclipse中未定义的引用glBindVertexArrayOES、glGenVertexArraysOES、glDeleteVertexArraysOES 试图用Android NDK编译C++代码,但这些错误不会消失 undefined reference to glBindVertexArrayOES undefined reference to glGenVertexArraysOES undefined reference to glDeleteVertexArraysOES

Opengl es eclipse中未定义的引用glBindVertexArrayOES、glGenVertexArraysOES、glDeleteVertexArraysOES 试图用Android NDK编译C++代码,但这些错误不会消失 undefined reference to glBindVertexArrayOES undefined reference to glGenVertexArraysOES undefined reference to glDeleteVertexArraysOES,opengl-es,android-ndk,Opengl Es,Android Ndk,在.mk文件中写入 LOCAL_LDLIBS := -lGLESv1_CM -ldl -llog -lz -landroid -lEGL 所有其他函数都是完美的,我需要声明什么才能使这些函数正常工作吗?这些函数不在基本opengl es规范中,因此默认情况下它们不是定义的,而是作为扩展提供的 如果您使用的设备支持此扩展,则可以获取函数的物理地址并通过函数指针使用它 应该是这样的: PFNGLGENVERTEXARRAYSOESPROC glGenVertexArraysOES; PFNGLB

在.mk文件中写入

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

所有其他函数都是完美的,我需要声明什么才能使这些函数正常工作吗?

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

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

应该是这样的:

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。

您是否考虑过您的OpenGL ES实现不支持OES_vertex_array_object?在glext.h中,我看到GL_API void GL_APIENT glBindVertexArrayOES(GLuint array);GL_API void GL_API entry glDeleteVertexArraysOES(GLsizei n,const GLuint*数组);GL_API void GL_API条目glGenVertexArraysOES(GLsizei n,GLuint*数组);是的。glBindVertexArrayOES和glGenVertexArraysOES工作正常。但当我使用glDeleteVertexArraysOES时,游戏崩溃了=/