android – 检测OpenGl ES 2.0是否可用

我正在为API级别> = 7创建 Android应用程序.一个屏幕通过ndk使用带有OpenGL ES 2.0的GLSurfaceView.如何检测opengl 2.0是否可用?我不能在我的AndroidManifest.xml中使用android:glEsVersion =“0x00020000”,因为我必须支持API级别> = 7的所有手机.如果不支持2.0,我将显示静态屏幕.

我正在使用ndk附带的hello-gl2示例应用程序中的类似代码.在GL2JNIView中,当它设置Opengl上下文时,如果它没有找到合适的opengl配置(在我的情况下是一个需要opengl es 2.0的配置),它会抛出IllegalArgumentException(“No configs match configSpec”)并且应用程序崩溃.我无法找到拦截该异常并在该屏幕上执行其他操作的方法.有任何想法吗?

解决方法

这是我在互联网中发现的:
private boolean checkGL20Support( Context context )
{
    EGL10 egl = (EGL10) EGLContext.getEGL();       
    EGLDisplay display = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);

    int[] version = new int[2];
    egl.eglInitialize(display,version);

    int EGL_OPENGL_ES2_BIT = 4;
    int[] configAttribs =
    {
        EGL10.EGL_RED_SIZE,4,EGL10.EGL_GREEN_SIZE,EGL10.EGL_BLUE_SIZE,EGL10.EGL_RENDERABLE_TYPE,EGL_OPENGL_ES2_BIT,EGL10.EGL_NONE
    };

    EGLConfig[] configs = new EGLConfig[10];
    int[] num_config = new int[1];
    egl.eglChooseConfig(display,configAttribs,configs,10,num_config);     
    egl.eglTerminate(display);
    return num_config[0] > 0;
}

资料来源:http://www.badlogicgames.com/wordpress/?p=343

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...