Ich habe mehrere Ansichten zu diesem Thema gesehen und es beginnt mich zu verwirren. Ich hoffe wirklich, dass jemand mir eine definitive Antwort geben kann! :)OpenGL ES 2.0 Unterstützung für Android?
Ich denke, um ehrlich zu sein: unterstützt der Android-Emulator OpenGL ES 2.0? Ich habe einige Leute sagen hören "Ja, aber Sie müssen ein paar Einstellungen ändern." und ich habe auch gesehen "Nein, es unterstützt es nicht, Punkt." Hier ist, was ich getan habe, um das Problem zu beheben, einschließlich einiger Fehlermeldungen, die ich bekommen habe.
Zuerst modifizierte ich die AndroidManifest.xml den folgenden Code enthalten:
<uses-feature
android:glEsVersion="0x00020000" />
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="17" />
Dann, als ich meine GLSurfaceView instanziiert wollen, verwende ich diese Folge von Code es zu instanziiert:
super(context);
setEGLContextClientVersion(2);
setRenderer(new MyRenderer());
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
Dann, überall sagte ich, dass Sie in den AVD-Manager gehen müssen, wählen Sie den Emulator, gehen Sie zu "Hardware", fügen Sie "GPU-Emulation" und setzen Sie den booleschen Wert auf "Ja". Aber hier ist das, was ich sehe, wenn ich an meinem aussehen:
Was eigenartig ist, dass ich einen anderen Emulator in meinem AVD-Manager haben, von denen ich die „Hardware“ Tabelle haben:
Und Ihnen genau zu zeigen, was ich tue, ist hier ein Code, die einige Sachen, die ich in OpenGL ES tun möchte, tut 2.0 (ich dies von Android eigenen Tutorials hauptsächlich vor):
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);
Ich möchte nicht meinen Code wieder mit OpenGL ES 1.0 arbeiten, weil das eine Menge Kopfschmerzen erfordert und wenn ich es vermeiden kann, werde ich.
Schließlich, wenn ich versuche, mein Programm zu starten, schließt das Programm mit dem Fenster: "Leider wurde gestoppt." Dies ist, was LogCat mir gesagt:
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)
Ich werde sagen, ich bin nicht ein Experte für das überhaupt und dies ist meine erste Erfahrung mit OpenGL. Wenn jemand irgendwelche Ideen hat, was ich tun kann, um das zu beheben, wäre ich für immer dankbar. :) Vielen Dank!
Bitte beachten Sie, dass Hardware-GPU-Beschleunigung nur auf AVDS mit Android 4.0 oder höher arbeitet. AVD mit Android 2.2 hat keine beschleunigte OpenGL ES 2.0 – keaukraine
Ich werde versuchen, diesen Code heute auf Android-Geräten zu testen. Ich möchte sicher sein, dass dieser Code auf echten Geräten funktioniert. – Petr
Ich habe diesen Code auf Fly-Gerät getestet, und es funktioniert. Leute im cocos2d-x-Forum erwähnten, dass dieser Code nur auf dem Emulator ausgeführt werden sollte, nicht auf dem Gerät. Siehe http://www.cocos2d-x.org/boards/6/topics/12563?r=19457#message-19457 – Petr