15

我知道模拟器从 SDK 工具 17 和 Android 4.0.3 开始就支持 OpenGL ES 2.0,但这是在 2012 年 4 月推出的。

Android 模拟器是否支持 OpenGL ES 3.0,还是我们还在等待呢?
如果没有,是否有任何其他第三方仿真器/模拟器(例如 Genymotion)支持 OpenGL ES 3.0?

4

3 回答 3

12

最新的 Android 模拟器现在支持 OpenGL ES 3.0。要使用 OpenGL ES 3.0,您的开发机器需要在 Microsoft® Windows® 或 Linux 上支持 OpenGL 3.2 或更高版本的主机 GPU 显卡。

请参阅: https ://android-developers.googleblog.com/2017/05/android-studio-3-0-canary1.html

Android 模拟器中的 OpenGL ES 3.0

来自 NDK的gles3jni示例应用程序是一个很好的尝试选择。

如果它失败了:

java.lang.RuntimeException: createContext failed: EGL_BAD_CONFIG

也尝试先在主机上运行:

echo "GLESDynamicVersion = on" >> ~/.android/advancedFeatures.ini

由于开发人员目前正在将支持的主机 GPU 列入白名单,并且会覆盖它,另请参阅:https ://issuetracker.google.com/issues/68496715

于 2017-05-22T16:02:36.687 回答
6

Android Emulator 和系统映像和 Genymotion 目前都不支持 OpenGL ES 版本 3.0。

在我写这篇文章时,最新的(Rev. 1)ARM 和适用于 Android 5.1.1(API 22)的 x86 系统映像报告它们支持 OpenGL ES 版本 2.0 而不是 3.0。

同样,Genymotion 的 Nexus 5 Android 5.1.0 API 22 虚拟设备报告仅支持 OpenGL ES 版本 2.0。

您可以使用下面的代码来检查未来系统映像和模拟器下的支持:

package com.example.opengltest;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.ConfigurationInfo;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class OpenGLESVersionActivity extends Activity {

    private static final String TAG = "OpenGLESVersionActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final ActivityManager activityManager =
                (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        final ConfigurationInfo configurationInfo =
                activityManager.getDeviceConfigurationInfo();
        String versionText = "Device Supported OpenGL ES Version = " + configurationInfo.getGlEsVersion();
        Toast.makeText(this, versionText, Toast.LENGTH_LONG).show();
        Log.d(TAG, versionText);
    }

}
于 2015-05-12T06:36:09.633 回答
4

我通过运行找到了模拟器支持的版本glGetString(GLES20.GL_VERSION)。我测试的模拟器似乎不支持 OpenGL ES 3.0 或更高版本,但我不想假设他们报告的内容是他们实际支持的内容,所以我不承诺这个词是最终的。

在我的 Nexus 5 上

OpenGL ES 3.0 V@104.0 AU@ (GIT@Id3510ff6dc)

使用HAXM的安卓模拟器

OpenGL ES 2.0 (2.1 NVIDIA-10.2.7 310.41.25f01)

Genymotion 模拟器

OpenGL ES 2.0 (2.1 NVIDIA-10.2.7 310.41.25f01)

于 2015-05-18T18:16:31.893 回答