2

デバイスで実行されている魔女の openGl バージョンを検出するにはどうすればよいですか? 私が見つけたのは、すべてのデバイス 2.3+ が openGL 2.0 をサポートしていると言っている Android だけです。バージョン 2.3 にアップグレードされたデバイスを見つけたので、魔女は真実ではありませんが、それらのシステムはそれをサポートしていません。

4

2 に答える 2

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

実際には他のいくつかの方法も提供され、テストはそれらがすべて同じ結果を返すことを検証します。

于 2013-03-05T03:54:31.100 に答える
5

glGetString(GL_VERSION)

詳細については、http ://www.khronos.org/opengles/documentation/opengles1_0/html/glGetString.html を参照してください。

于 2012-05-21T17:22:50.713 に答える