如何在运行时检测OpenGl版本。 Android的

时间:2012-05-21 12:05:14

标签: android opengl-es

如何检测我的设备正在运行的open open版本?所有我发现的是android说所有设备2.3+都支持openGL 2.0。 Witch不是真的,因为我发现升级到版本2.3的设备但它们不支持它。

2 个答案:

答案 0 :(得分:5)

答案 1 :(得分:5)

来自Android CTS(兼容性测试套件)OpenGlEsVersionTest.java

private static int getVersionFromPackageManager(Context context) {
    PackageManager packageManager = context.getPackageManager();
    FeatureInfo[] featureInfos = packageManager.getSystemAvailableFeatures();
    if (featureInfos != null && featureInfos.length > 0) {
        for (FeatureInfo featureInfo : featureInfos) {
            // Null feature name means this feature is the open gl es version feature.
            if (featureInfo.name == null) {
                if (featureInfo.reqGlEsVersion != FeatureInfo.GL_ES_VERSION_UNDEFINED) {
                    return getMajorVersion(featureInfo.reqGlEsVersion);
                } else {
                    return 1; // Lack of property means OpenGL ES version 1
                }
            }
        }
    }
    return 1;
}

/** @see FeatureInfo#getGlEsVersion() */
private static int getMajorVersion(int glEsVersion) {
    return ((glEsVersion & 0xffff0000) >> 16);
}

它实际上也提供了一些其他方法,测试验证它们都返回相同的结果。