尝试使用 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
所有其他功能都完美找到,我是否需要声明任何内容才能使这些工作?
最佳答案
此函数不在基本的 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" );
比你可以使用的功能。只是不要忘记此绑定(bind)在运行时发生,因此检查是否支持此函数是一个好主意。如果设备不支持,指针将为 0。