Ho cercato di eseguire codice che utilizza VAO in C++ utilizzando l'NDK di Android e in esecuzione su un emulatore. Mi aspetto di poter utilizzare glDeleteVertexArraysOES
, glGenVertexArraysOES
e glBindVertexArrayOES
.Gli oggetti Array Vertex di OpenGL ES sono supportati in qualsiasi emulatore Android?
ho scoperto che l'emulatore non riesce ad eseguire il codice, anche quando uso OpenGL ES 2 e dinamicamente collegare le estensioni che utilizzano questa soluzione: Are Vertex Array Objects supported in Android OpenGL ES 2.0 using extensions?
ho corse glGetString(GL_EXTENSIONS)
su un Nexus 4 emulatore in esecuzione API livello 19, e accelerazione GPU e prende la seguente:
GL_EXT_debug_marker
GL_OES_EGL_image
GL_OES_depth24
GL_OES_depth32
GL_OES_element_index_uint
GL_OES_texture_float
GL_OES_texture_float_linear
GL_OES_compressed_paletted_texture
GL_OES_compressed_ETC1_RGB8_texture
GL_OES_depth_texture
GL_OES_texture_half_float
GL_OES_texture_half_float_linear
GL_OES_packed_depth_stencil
GL_OES_vertex_half_float
assumo devo vedere GL_OES_vertex_array_object
per utilizzare oggetti array di vertici. Quindi sembra che sia un no-go per quel particolare emulatore.
Sapete se è possibile utilizzare gli oggetti array di vertici in OpenGL ES su qualsiasi emulatore Android esistente (di terze parti o altro)? Se é cosi, come?
Se l'emulatore utilizza GLES con accelerazione hw, dipende dall'effettiva implementazione _ sull'host_ se queste funzionalità sono disponibili o meno. – derhass
Non penso che sia necessariamente vero. Sto eseguendo l'emulatore su un macbook pro della metà del 2014 con NVIDIA GeForce GT 750M 2048 MB e quando ho eseguito glGetString (GL_EXTENSIONS) nell'emulatore, è stato riportato che non supportava le estensioni degli oggetti array di vertici. Quando eseguivo glGetString (GLES20.GL_VERSION) riportava che supportava solo la versione 2.0. Se usasse tutte le funzionalità della GPU dell'host, mi aspetterei che supporti OpenGL ES 3.0, ma credo di non capirlo molto bene. –
Un'applicazione può richiedere una versione specifica di un contesto GLES (più o meno) e se ottiene solo 2.0, tutte le funzionalità successive non sono necessariamente disponibili, anche se la GPU sarebbe in grado di utilizzarle. Se 'glGetString' ha restituito 2.0, hai definitivamente ottenuto 2.0. L'emulatore probabilmente lo ha richiesto. Forse puoi anche cambiarlo in alcune finestre di dialogo delle impostazioni. Ma non ho mai lavorato con gli emulatori andorid prima, quindi non ne ho idea. Inoltre non so come nvidia gestisca le estensioni OES, però. – derhass