Android Native NDK OpenGL ES: нереализованный API

Я работаю над полной реализацией OpenGL ES 2.0 на C++ для Android.

В настоящее время наша программа работает без JNI или какого-либо класса Java в проекте, используя вместо этого только NativeActivity.

Сосредоточившись на самой части рендеринга приложения, мы получили простой метод:

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

В Android.mk было включено:

LOCAL_LDLIBS    := -landroid -llog -lEGL -lGLESv1_CM -lOpenSLES -lGLESv2

А в AndroidManifest.xml сообщается:

    

Итак, программа отлаживается и компилируется без проблема. При запуске появляется сообщение:

    error  libEGL   called unimplemented OpenGL ES API

Форум дает предложение, применимое для java - Android: GLES20: Вызывается нереализованный API OpenGL ES , включая в код команду setEGLContextClientVersion:

    GLSurfaceView surfaceView = new GLSurfaceView(this);
    surfaceView.setEGLContextClientVersion(2);

Однако, setEGLContextClientVersion — это своего рода метод-оболочка, предназначенный для java.

setEGLContextClientVersion не относится к исходной версии OpenGL ES и не может применяться для разработки исходной версии C++ OGLES.

Поэтому вместо этого я использовал:

const EGLint attribList[] = {EGL_CONTEXT_CLIENT_VERSION, 2,EGL_NONE};
mContext = eglCreateContext(mDisplay, lConfig, EGL_NO_CONTEXT,attribList);

Но ошибка еще не исчезла.

5
задан Community 23 May 2017 в 12:02
поделиться