android-ndk, glGenVertexArraysOES не найден

Я хочу использовать VAO в своем приложении на Android для Android.

Проблема в том, что GL_OES_vertex_array_object поддерживается, и я даже могу получить адреса glBindVertexArrayOES а также glDeleteVertexArraysOES но 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" );
}

Конечно я получаю сообщение журнала

Не удается получить адрес процесса: 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

2 ответа

Я только что проверил это....

Заменить:

#include <GLES2/gl2ext.h>

С этим:

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

Макрос GL_GLEXT_PROTOTYPES должен быть определен до того, как вы включите gl2ext.h. Нет необходимости явно определять функции.

Если это действительно ваш код, то ошибка в том, что вы пропускаете '!'. Для сравнения:

if ( !glDeleteVertexArraysOES )

в

if ( glGenVertexArraysOES )
Другие вопросы по тегам