Widziałem wiele ujęć na ten temat i zaczynało mnie mylić. Naprawdę mam nadzieję, że ktoś może udzielić mi ostatecznej odpowiedzi! :)Obsługa OpenGL ES 2.0 dla Androida?
Myślę, że jestem szczery: czy emulator Androida obsługuje OpenGL ES 2.0? Widziałem, jak niektórzy mówią: "Tak, ale musicie zmienić kilka ustawień". i widziałem też "Nie, to nie obsługuje, okres." Oto, co zrobiłem, aby spróbować rozwiązać problem, w tym niektóre komunikaty o błędach, które dostałem.
pierwsze, zmodyfikował AndroidManifest.xml zawierać następujący kod:
<uses-feature
android:glEsVersion="0x00020000" />
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="17" />
Wtedy, gdy chcę instancję mój GLSurfaceView, używam tej sekwencji kodu, aby go instancję:
super(context);
setEGLContextClientVersion(2);
setRenderer(new MyRenderer());
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
Następnie, wszędzie, gdzie wyglądałem, powiedziałem, że musisz wejść do AVD Manager, wybrać emulator, przejść do "Hardware", dodać "emulację GPU" i ustawić boolean na "yes". Jednak tutaj jest to, co widzę, gdy patrzę na kopalni:
Co osobliwe jest to, że mam inny emulator w moim AVD Menedżer których mam „hardware” tabeli:
I żeby pokazać dokładnie to, co robię, tu jest jakiś kod, który wykonuje pewne rzeczy chcę zrobić w OpenGL ES 2.0 (I got to głównie z własnych tutoriali 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);
Nie chcę, aby mój kod powrócił do pracy z OpenGL ES 1.0, ponieważ będzie to wymagało wielu bólów głowy i jeśli będę mógł tego uniknąć, zrobię to.
Wreszcie, kiedy próbuję uruchomić mój program, program zamyka się za pomocą okna: "Niestety, został zatrzymany." To co LogCat powiedział mi:
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)
powiem jestem nie ekspertem w tym w ogóle i jest to moje pierwsze doświadczenie z OpenGL. Jeśli ktoś ma jakieś pomysły na to, co mogę zrobić, aby to naprawić, będę zawsze wdzięczny. :) Dziękuję Ci!
Należy pamiętać, że sprzętowa akceleracja GPU działa tylko na AVDs z Android 4.0 i wyżej. AVD z Androidem 2.2 nie ma przyspieszonego OpenGL ES 2.0 – keaukraine
Spróbuję przetestować ten kod na urządzeniach z Androidem. Chcę mieć pewność, że ten kod będzie działał na prawdziwych urządzeniach. – Petr
Przetestowałem ten kod na urządzeniu Fly i działa. Ludzie na forum cocos2d-x wspomnieli, że ten kod powinien być uruchamiany tylko na emulatorze, a nie na urządzeniu. Zobacz http://www.cocos2d-x.org/boards/6/topics/12563?r=19457#message-19457 – Petr