AndroidエミュレータはOpenGLES2.0をサポートしていますか?「はい、でもいくつかの設定を変更する必要があります」と言う人もいます。そして私はまた「いいえ、それはそれをサポートしていません、期間」を見ました。受け取ったエラーメッセージを含め、問題を修正するために私が行ったことは次のとおりです。
まず、AndroidManifest.xmlを変更して、次のコードを含めました。
<uses-feature
android:glEsVersion="0x00020000" />
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="17" />
次に、GLSurfaceViewをインスタンス化する場合は、次の一連のコードを使用してインスタンス化します。
super(context);
setEGLContextClientVersion(2);
setRenderer(new MyRenderer());
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
次に、どこを見ても、AVDマネージャーに移動し、エミュレーターを選択し、[ハードウェア]に移動し、[GPUエミュレーション]を追加して、ブール値を[はい]に設定する必要があると言いました。しかし、これが私が私のものを見たときに私が見るものです:
特徴的なのは、AVD Managerに別のエミュレーターがあり、そのエミュレーターに「ハードウェア」テーブルがあることです。
そして、私が行っていることを正確に示すために、OpenGL ES 2.0でやりたいことを実行するコードをいくつか示します(これは主にAndroid独自のチュートリアルから取得しました)。
int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode);
int fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode);
program = GLES20.glCreateProgram();
GLES20.glAttachShader(program, vertexShader);
GLES20.glAttachShader(program, fragmentShader);
GLES20.glLinkProgram(program);
OpenGL ES 1.0で動作するようにコードを変更したくないのは、多くの頭痛の種が必要になるためです。それを回避できれば、そうします。
最後に、プログラムを実行しようとすると、「残念ながら、停止しました」というウィンドウでプログラムが閉じます。これはLogCatが私に言ったことです:
12-05 06:16:27.165: E/AndroidRuntime(936): FATAL EXCEPTION: GLThread 81
12-05 06:16:27.165: E/AndroidRuntime(936): java.lang.IllegalArgumentException: No config chosen
12-05 06:16:27.165: E/AndroidRuntime(936): at android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:874)
12-05 06:16:27.165: E/AndroidRuntime(936): at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:1024)
12-05 06:16:27.165: E/AndroidRuntime(936): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1401)
12-05 06:16:27.165: E/AndroidRuntime(936): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)