2012-09-19 3 views
5

Je veux utiliser VAO dans mon application native-c pour Android.android-ndk, glGenVertexArraysOES pas trouvé

Le problème est que GL_OES_vertex_array_object est supporté et je peux même obtenir on ne trouve pas les adresses des glBindVertexArrayOES et glDeleteVertexArraysOES mais glGenVertexArraysOES.

La présence de GL_OES_vertex_array_object signifie-t-elle que toutes ces fonctions sont accessibles?

Mon code pour l'initialisation 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"); 
} 

Bien sûr je reçois le message du journal

 
Can't get proc address: glGenVertexArraysOES 

Mon Android.mk (raccourci un peu):

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) 

Modèle de l'appareil Samsung i9003 avec Android 2.3.5

+0

Qu'essayez-vous d'accomplir? Veuillez copier des extraits de code. À quoi ressemble votre Makefile? De quelles bibliothèques dépendes-tu? –

+0

Relisez, s'il vous plaît, j'ai mis à jour la question. –

+0

Votre appareil est-il "réel"? J'espère que vous n'utilisez pas un émulateur Android simulant un Samsung i9003, non? J'ai trouvé [cet article] (http://www.cocos2d-x.org/issues/1229) que vous pourriez être intéressé. "Attention: OpenGL ES 2.0 n'est actuellement pas supporté par l'émulateur Android. appareil de test exécutant Android 2.2 (API niveau 8) ou supérieur afin d'exécuter et de tester l'exemple de code dans ce tutoriel. " –

Répondre

2

Si c'est vraiment votre code, alors le bug est qu'il vous manque un '!'. Comparez:

if (!glDeleteVertexArraysOES) 

à

if (glGenVertexArraysOES) 
1

Je viens de tester cette ....

Remplacer:

#include <GLES2/gl2ext.h> 

Avec ceci:

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

La macro GL_GLEXT_PROTOTYPES doit être définie avant d'inclure gl2ext.h. Il n'est pas nécessaire de définir les fonctions, explicitement.