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 )