Ho visto più riprese su questo argomento e il suo incomincia a confondermi. Spero davvero che qualcuno possa darmi una risposta definitiva! :)Supporto OpenGL ES 2.0 per Android?
Immagino di essere sincero: l'emulatore Android supporta OpenGL ES 2.0? Ho visto alcune persone dire "Sì, ma devi modificare alcune impostazioni". e ho anche visto "No, non lo supporta, punto". Ecco cosa ho fatto per provare e correggere il problema, inclusi alcuni messaggi di errore che ho ricevuto.
In primo luogo, ho modificato l'AndroidManifest.xml per contenere il seguente codice:
<uses-feature
android:glEsVersion="0x00020000" />
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="17" />
Poi, quando voglio istanziare la mia GLSurfaceView, io uso questa sequenza di codice per istanziare:
super(context);
setEGLContextClientVersion(2);
setRenderer(new MyRenderer());
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
Poi, dappertutto ho visto che devi entrare in AVD Manager, selezionare l'emulatore, andare su "Hardware", aggiungere "emulazione GPU" e impostare il booleano su "sì". Tuttavia, qui è quello che vedo quando guardo la mia:
Che cosa è singolare è che ho un altro emulatore nel mio AVD Manager che io ho il "Hardware" tavolo:
E proprio per mostrare esattamente quello che sto facendo, ecco qualche codice che fa alcune cose che voglio fare in OpenGL ES 2.0 (I principalmente ricevuto questo da proprio tutorial di 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);
Non voglio cambiare il mio codice per funzionare con OpenGL ES 1.0 perché questo richiederà un sacco di mal di testa e se posso evitarlo, lo farò.
Infine, quando provo a eseguire il mio programma, il programma si chiude con la finestra: "Sfortunatamente, si è fermato." Questo è ciò che LogCat mi ha detto:
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)
Dirò io non un esperto su questo a tutti e questa è la mia prima esperienza con OpenGL. Se qualcuno ha qualche idea su cosa posso fare per risolvere questo problema, sarei per sempre grato. :) Grazie!
Si prega di notare che l'accelerazione hardware della GPU funziona solo su AVDS con Android 4.0 e superiori. AVD con Android 2.2 non ha accelerato OpenGL ES 2.0 – keaukraine
Cercherò di testare questo codice su dispositivi Android oggi. Voglio essere sicuro che questo codice funzionerà su dispositivi reali. – Petr
Ho testato questo codice sul dispositivo Fly e funziona. Le persone al forum cocos2d-x hanno detto che questo codice dovrebbe essere eseguito solo su emulatore, non sul dispositivo. Vedi http://www.cocos2d-x.org/boards/6/topics/12563?r=19457#message-19457 – Petr