web-dev-qa-db-ja.com

AndroidエミュレーターはOpenGLES 3.0をサポートしていますか?

エミュレーター SDKツール17およびAndroid 4.0. の時点でOpenGL ES 2.0をサポートしていますが、2012年4月に導入されました。

AndroidエミュレーターはOpenGLES 3.0をサポートしていますか、それともまだそれを待っていますか?
そうでない場合、他のサードパーティのエミュレーター/シミュレーター(Genymotionなど)はOpenGL ES 3.0をサポートしていますか?

13

最新のAndroidエミュレーターはOpenGLES3.0をサポートするようになりました。OpenGLES3.0を使用するには、開発マシンでMicrosoft®Windows®またはLinuxでOpenGL3.2以降をサポートするホストGPUグラフィックカードが必要です。

参照: https://Android-developers.googleblog.com/2017/05/Android-studio-3-0-canary1.html

OpenGL ES 3.0 in Android Emulator

gles3jni sample app NDKから試してみるのは良いオプションです。

それが失敗した場合:

Java.lang.RuntimeException: createContext failed: EGL_BAD_CONFIG

また、最初にホストで実行してみてください。

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

開発者は現在、サポートされているホストGPUをホワイトリストに登録しており、それをオーバーライドしているため、以下も参照してください。 https://issuetracker.google.com/issues/68496715

10
Jamal Eason

AndroidエミュレーターとシステムイメージもGenymotionも、現在OpenGLESバージョン3.0をサポートしていません。

私がこれを書いているとき、最新の(Rev. 1)ARM and x86 system images for Android 5.1.1(API 22)report to support OpenGL ES Version 3.0ではなく2.0。

同様に、GenymotionのNexus 5 Android 5.1.0 API 22仮想デバイスは、OpenGLESバージョン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);
    }

}
6
Godfrey Duke

glGetString(GLES20.GL_VERSION)を実行してエミュレータがサポートするバージョンを見つけました。私がテストしたエミュレーターはOpenGLES 3.0以降をサポートしていないようですが、それらがレポートであるとは想定したくありません。 実際にはサポートしているので、このWordが最終的なものであるとは約束していません。

私のNexus 5で

OpenGL ES 3.0 [email protected] AU@ (GIT@Id3510ff6dc)

HAXMを使用するAndroidエミュレーター

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)

4