Je travaille sur un projet avec SDL et OpenGL. Le jeu fonctionne très bien sur Windows, Linux, OS X et iOS. Cependant, la version Android montre un problème sur mon téléphone en particulier. J'ai testé un autre appareil et ça marche aussi très bien.
Le problème auquel je suis confronté est un problème visuel. Cela se produit en rafales: par exemple: 90 images correctes puis 40 images le problème. Le problème lui-même est un peu difficile à décrire, mais je vais essayer. L'écran est mis à jour partiellement correct (du haut de mon téléphone jusqu'à environ la moitié) et scintille partiellement. L'effet vacillant est une sorte de va-et-vient. Je pense que c'est lié à la double mise en mémoire tampon. Je pense que parce que ce que je vois à l'écran saute d'avant en arrière à chaque image. C'est comme si la moitié de l'écran était une image dans le temps et l'image suivante 2 images en retard. Un peu comme une procession d'Echternach, je suppose que vous pourriez dire. Si je le trace dans un graphique où le temps passe en descendant le graphique, je pense que je '
left half | right half (phone is in landscape)
------------------------
time 1 | 1 1
time 2 | 2 2
time 3 | 3 1
time 4 | 4 4
time 5 | 5 3
time 6 | 6 6
time 7 | 7 5
time 8 | 8 8
time 9 | 9 7
Donc la moitié droite est une image dans le temps, et l'image suivante, elle montre l'image précédente. Cela confirme ma théorie selon laquelle il y a un problème avec la double mise en mémoire tampon. Il semble qu'il ne soit pas en mesure de mettre à jour complètement le backbuffer avant qu'il ne soit affiché à l'écran, ou quelque chose du genre.
En outre, la répartition entre le bon et le glitch à l'écran est différente d'une image à l'autre, ce qui, je pense, prouve qu'il s'agit d'un problème de synchronisation et dépend fortement du timing de ce qui se passe. AjouterglFinish();
avant leSDL_GL_SwapWindow();
appel n'aide pas.
Informations sur la version: SDL signale que vsync doit être activé. Cependant, je crois que ce n'est pas déchirant. Mon téléphone est un Samsung Galaxy S3 mini et fonctionne sous Android 5.1.1 (CM12) et le GPU (Mali-400) prend en charge OpenGL ES 2.0. D'autres jeux fonctionnent bien sur mon téléphone.
Réponses:
Une section du fichier Lisez - moi en parle:
la source