您好我在Nexus 7,Android 5.0上运行了一个应用程序。它给了我错误称为未实现的opengl es api 。我正在尝试使用opengl es 3.0。我在我的清单文件中添加了以下内容
<uses-feature android:glEsVersion="0x00030000"/>
<uses-sdk android:minSdkVersion="21"/>
然后在我的make文件中我有
LOCAL_LDLIBS := -llog -lGLESv3
我调试了代码,发现在guardedrun函数中的GLSurfaceView类中出现了错误。我有自定义GlSurfaceview和GLSurfaceView.Renderer。 GLSurfaceView类首先调用OnSurfaceCreated,它运行顺畅。它调用onSurfaceChanged函数时失败。我在onSurfaceChanged函数中调用了我的jni draw函数。所以它在C ++代码中失败了。我无法调试jni代码。以下是我创建上下文的代码
private static int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig) {
Log.w(TAG, "creating OpenGL ES 3.0 context");
checkEglError("Before eglCreateContext", egl);
int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION, 3, EGL10.EGL_NONE };
EGLContext context = egl.eglCreateContext(display, eglConfig, EGL10.EGL_NO_CONTEXT, attrib_list);
checkEglError("After eglCreateContext", egl);
return context;
}