android-ndk,找不到 glGenVertexArraysOES

Posted

技术标签:

【中文标题】android-ndk,找不到 glGenVertexArraysOES【英文标题】:android-ndk, glGenVertexArraysOES not found 【发布时间】:2012-09-11 12:25:00 【问题描述】:

我想在我的 android 原生 c 应用程序中使用 VAO。

问题是,支持GL_OES_vertex_array_object,我什至可以得到glBindVertexArrayOESglDeleteVertexArraysOES的地址,但找不到glGenVertexArraysOES

GL_OES_vertex_array_object的存在是否意味着所有这些功能都可以访问?

我的 VAO 初始化代码:

std::string vao = "GL_OES_vertex_array_object";

if ( isExtensionSupported ( vao.c_str () ) != 0 )

    LOG ( vao << " supported" );
    glBindVertexArrayOES = (PFNGLBINDVERTEXARRAYOESPROC)eglGetProcAddress ( "glBindVertexArrayOES" );
    if ( !glBindVertexArrayOES )
        LOG ( "Can't get proc address: glBindVertexArrayOES" );

    glDeleteVertexArraysOES = (PFNGLDELETEVERTEXARRAYSOESPROC)eglGetProcAddress ( "glDeleteVertexArraysOES" );
    if ( !glDeleteVertexArraysOES )
        LOG ( "Can't get proc address: glDeleteVertexArraysOES" );

    glGenVertexArraysOES = (PFNGLGENVERTEXARRAYSOESPROC)eglGetProcAddress ( "glGenVertexArraysOES" );
    if ( glGenVertexArraysOES )
        LOG ( "Can't get proc address: glGenVertexArraysOES" );

else

    LOG ( vao << " not supported" );

我当然会收到日志消息

无法获取 proc 地址:glGenVertexArraysOES

我的Android.mk(缩短一点):

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := smart
LOCAL_SRC_FILES := Base/Node.cpp
...

LOCAL_LDLIBS    := -llog -landroid -lGLESv2 -lEGL
LOCAL_STATIC_LIBRARIES := nv_and_util

include $(BUILD_SHARED_LIBRARY)

$(call import-add-path, C:/NVPACK/TDK_Samples/tegra_android_native_samples_v10p00/libs/jni)
$(call import-module,nv_and_util)

设备型号 Samsung i9003 搭载 Android 2.3.5

【问题讨论】:

你想达到什么目的?请复制一些代码sn-ps。你的makefile是什么样的?你依赖什么库? 请重读,我更新了问题。 您的设备是“真实的”吗?我希望您不要使用模拟三星i9003的android模拟器,对吗?我找到了您可能感兴趣的this post。“注意:Android Emulator 目前不支持 OpenGL ES 2.0。您必须拥有运行 Android 2.2(API 级别 8)或更高版本的物理测试设备才能运行和测试本教程中的示例代码。” 是的,它是真正的设备,它支持 OpenGL ES 2.0。感谢您的链接。现在出现了新的问题。这里有人成功使用VAO + android ndk吗? 也许你应该用你的新问题更新这个问题的标题... 【参考方案1】:

我刚刚测试了这个....

替换:

#include <GLES2/gl2ext.h>

有了这个:

#define GL_GLEXT_PROTOTYPES
#include <GLES2/gl2ext.h>

必须在包含 gl2ext.h 之前定义宏 GL_GLEXT_PROTOTYPES。 无需明确定义函数。

【讨论】:

【参考方案2】:

如果这确实是您的代码,那么错误是您缺少“!”。比较:

if ( !glDeleteVertexArraysOES )

if ( glGenVertexArraysOES )

【讨论】:

以上是关于android-ndk,找不到 glGenVertexArraysOES的主要内容,如果未能解决你的问题,请参考以下文章

将 FFmpeg 与 Android-NDK 一起使用

android-ndk 对 NFC 编程有帮助吗?

(OK) 编译xerces-c-3.1.2(静态库)—CentOS 7— android-ndk

liniux mint android-ndk风波

(OK) 编译libiconv-1.14(静态库)—CentOS 7— android-ndk

android studio怎么更新android-ndk