Estoy trabajando para implementar un OpenGL ES 2.0 completamente en C++ para Android.Android nativo NDK OpenGL ES: API no implementada
Actualmente nuestro programa se ejecuta sin JNI o cualquier clase de Java en el proyecto, utilizando en su lugar solo NativeActivity.
Centrándose en la propia aplicación de renderización parte, tenemos un método sencillo:
renderWorld()
{ GLfloat vVertices[] = { 0.0f, 0.5f, 0.0f,
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f };
glClear (GL_COLOR_BUFFER_BIT);
glVertexAttribPointer (0, 3, GL_FLOAT, GL_FALSE, 0, vVertices);
glEnableVertexAttribArray (0);
glDrawArrays (GL_TRIANGLES, 0, 3);
}
En Android.mk se incluyó:
LOCAL_LDLIBS := -landroid -llog -lEGL -lGLESv1_CM -lOpenSLES -lGLESv2
Y en AndroidManifest.xml se informa:
<uses-feature android:glEsVersion="0x00020000"></uses-feature>
Por lo tanto, el programa depura y compila sin problemas. Cuando se configura para funcionar, viene el mensaje:
error libEGL called unimplemented OpenGL ES API
El Foro da una sugerencia viable para Java - Android: GLES20: Called unimplemented OpenGL ES API, incluyendo el código de la setEGLContextClientVersion comando:
GLSurfaceView surfaceView = new GLSurfaceView(this);
surfaceView.setEGLContextClientVersion(2);
Sin embargo, el setEGLContextClientVersion es una especie de método de envoltura para Java.
El setEGLContextClientVersion no pertenece a OpenGL ES nativo, y no puede ser aplicable para el desarrollo nativo de C++ OGLES.
Por lo tanto, he usado en su lugar:
const EGLint attribList[] = {EGL_CONTEXT_CLIENT_VERSION, 2,EGL_NONE};
mContext = eglCreateContext(mDisplay, lConfig, EGL_NO_CONTEXT,attribList);
Pero el error no ha desaparecido todavía.
Thanks man! Seguí tu sugerencia. Solucionó el problema. – ThreaderSlash