2012-09-19 19 views
5

Voglio utilizzare VAO nella mia applicazione nativa per Android.android-ndk, glGenVertexArrayOES non trovato

Il problema è, che GL_OES_vertex_array_object è supportato e posso anche ottenere gli indirizzi dei glBindVertexArrayOES e glDeleteVertexArraysOES ma glGenVertexArraysOES non viene trovato.

La presenza di GL_OES_vertex_array_object significa che è possibile accedere a tutte queste funzioni?

Il mio codice per VAO di inizializzazione:

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"); 
} 

Naturalmente ottengo il messaggio di log

 
Can't get proc address: glGenVertexArraysOES 

mio Android.mk (accorciato un po '):

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) 

modello di dispositivo Samsung i9003 con Android 2.3.5

+0

Cosa stai cercando di ottenere? Per favore copia alcuni snippet di codice. Come è il tuo makefile? Su quali basi fai affidamento? –

+0

Rileggi, per favore, ho aggiornato la domanda. –

+0

Il tuo dispositivo è "reale"? Spero tu non usi un emulatore Android che simula un Samsung i9003, giusto? Ho trovato [questo post] (http://www.cocos2d-x.org/issues/1229) a cui potresti essere interessato. "Attenzione: OpenGL ES 2.0 non è attualmente supportato dall'emulatore Android. Devi avere un fisico dispositivo di test con Android 2.2 (API Livello 8) o superiore per poter eseguire e testare il codice di esempio in questo tutorial. " –

risposta

2

Se questo è veramente il tuo codice, allora il bug è che ti manca un '!'. Confronto:

if (!glDeleteVertexArraysOES) 

a

if (glGenVertexArraysOES) 
1

Ho appena provato questo ....

Sostituire:

#include <GLES2/gl2ext.h> 

Con questo:

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

La macro GL_GLEXT_PROTOTYPES deve essere definita prima di includere gl2ext.h. Non è necessario definire le funzioni, in modo esplicito.