java.lang.RuntimeException: eglSwapBuffers a échoué: EGL_SUCCESS
J'ai une application OpenGL dans le Google Play Store et je suis face à un quotidien exception:
java.lang.RuntimeException: eglSwapBuffers failed: EGL_SUCCESS
at android.opengl.GLSurfaceView$EglHelper.throwEglException(GLSurfaceView.java:1085)
at android.opengl.GLSurfaceView$EglHelper.swap(GLSurfaceView.java:1043)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1369)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1123)
Le problème est que, sur tous mes smartphones je ne peux pas reproduire cette erreur. J'ai déjà contacté Google pour toutes les infos sur l'appareil, mais ils n'en ont pas (comme ils disent). La plate-forme de l'info dans l'exception est "les AUTRES".
J'ai trouvé quelques conseils sur le net que cette erreur pourrait être à partir d'un Samsung Galaxy Y périphérique, et j'ai trouvé quelques suggestions à inclure:
android:configChanges="orientation|screenSize"
dans le fichier manifeste Android, mais cela ne fonctionne pas!
Et bien sûr j'ai les onPause et onResume de manutention mis en œuvre pour ma GL surface qui, si elle n'est pas, produit d'autres eglSwapBuffer problèmes.
Personne n'a une solution pour ce problème?
Merci!
- Avez-vous trouvé une solution à ce problème?
- Non, je n'ai trouvé aucune solution, j'ai enlevé le Samsung Galaxy Y périphérique dans la liste des périphériques pris en charge.
- Je confirme l'expérience de la même erreur sur un Samsung Galaxy SIII
- Avez-vous trouvez une solution? - Ce vraiment les effets de la performance.
Vous devez vous connecter pour publier un commentaire.
Pas de solution, juste un commentaire
Pour certaines raisons, je ne peux pas commenter les posts précédents, mais j'ai quelques observations qui pourrait peut-être aider.
Nous avons le même problème et la difficulté à trouver une solution... Nous avons considérablement réduit la taille de notre textures et maintenant, aucun n'est plus grand que 1024x900 (n'oubliez pas la police chers). Mais nous avons encore besoin de plusieurs années et le problème est toujours là.
Nous avons cerner les problématiques périphériques à l'suivantes:
Aussi l'erreur est signalée dans deux saveurs différentes avec des numéros de ligne:
Je ne sais pas si je suis utile ici, mais au cas où ça aide...
Votre mémoire peut être pas assez pour charger toutes les données au premier abord. J'ai rencontré ce problème aussi, au moment de faire mon jeu avec AndEngine, trop Atlas avec une taille plus grande que 1024x1024 , les données peuvent être brisés.
Pas de solution, juste des observations.
L'appel à
eglSwapBuffers
renvoie la valeur false. La gestion des erreurs suivantes ne pas y faire face le cas qu'il n'y ait pas d'erreur -- potentiellement, il n'a pas été définie par EGL; OU la valeur de retour est faux.Je n'ai pas trouver la correspondance des sources. Ces appareils, soit exécuter patché
GLSurfaceView
s (la trace de la pile de recherche n'a rien trouvé...) ou qu'ils utilisent un entre-deux version (enfin, je ne sais pas si 4.0.2 est officiel, grepcode ne contient que des 4.0.1 et 4.0.3); OU j'ai raté quelque chose.Vous devez traquer exactes des dispositifs/les versions d'android ce problème. Ensuite, vous pouvez essayer de contourner ce problème en fournissant une version patchée de
GLSurfaceView
vous-même, ou en utilisant un autre EGL config, si le problème peut être résolu du tout. Il y a des bugs qui sont à gauche, non gérée pendant des semaines, vous vous demandez ce que des problèmes plus graves que le responsable de l'équipe visages...La solution que j'ai fini la mise en œuvre a été d'ajouter un gestionnaire global d'exception pour rattraper cette erreur (car il est projetée à l'extérieur de n'importe quel thread, j'ai le contrôle sur).
Donc, à moins que l'application ne plante pas et que je peux mettre en place un message expliquant la situation.