エミュレーター SDKツール17およびAndroid 4.0. の時点でOpenGL ES 2.0をサポートしていますが、2012年4月に導入されました。
AndroidエミュレーターはOpenGLES 3.0をサポートしていますか、それともまだそれを待っていますか?
そうでない場合、他のサードパーティのエミュレーター/シミュレーター(Genymotionなど)はOpenGL ES 3.0をサポートしていますか?
最新のAndroidエミュレーターはOpenGLES3.0をサポートするようになりました。OpenGLES3.0を使用するには、開発マシンでMicrosoft®Windows®またはLinuxでOpenGL3.2以降をサポートするホストGPUグラフィックカードが必要です。
参照: https://Android-developers.googleblog.com/2017/05/Android-studio-3-0-canary1.html
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
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);
}
}
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)