我見過多個關於這個話題,並開始混淆我。我真的希望有人能給我一個明確的答案! :)OpenGL ES 2.0支持Android?
我猜是生硬:Android模擬器是否支持OpenGL ES 2.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管理另一個模擬器,其中我有「硬件」表:
而只是爲了告訴你我在做什麼,這裏的一些代碼,做一些東西,我想在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)
,我會說我並不在此的專家,這是我的OpenGL的第一次經歷。如果任何人有任何想法來解決這個問題,我會永遠感激。 :) 謝謝!
請注意,硬件GPU加速僅適用於自動真空澱積系統與Android 4.0及以上。 AVD與Android 2.2不會加速OpenGL ES 2.0 – keaukraine
我會嘗試今天在Android設備上測試此代碼。我想確保這些代碼可以在真實設備上運行。 – Petr
我在Fly設備上測試過這段代碼,它工作正常。 cocos2d-x論壇的人員提到,這個代碼只能在模擬器上運行,而不能在設備上運行。見http://www.cocos2d-x.org/boards/6/topics/12563?r=19457#message-19457 – Petr