2011-05-30 3 views
0

J'ai une bibliothèque native pour un jeu que je porte de l'iPhone à Android. Notre version de système d'exploitation cible est 1.6, et le jeu fonctionne plutôt bien sans optimisations. Cependant, le moment où je permets des optimisations de tout type (que ce soit -O1, -O2 ou -O3), tout (Input, Graphics, Sound, code de jeu) mais les graphismes fonctionnent correctement.Bibliothèque de compilation avec des optimisations pauses graphiques

Voici ce que je suis censé faire:

http://i56.tinypic.com/2yzn4o6.png

Et ce que je reçois:

http://i51.tinypic.com/raqogl.png

J'ai déjà essayé d'obtenir de l'aide sur les listes de diffusion NDK mais je n'ai pas de réponses. J'ai même essayé d'envoyer les textures en blanc pur et elles se comportent encore plus étrangement, avec de minuscules triangles blancs qui «tombent» dans l'écran de chargement jusqu'à ce que tout l'écran devienne blanc, alors que je dessine seulement quelques triangles. J'utilise vs-android pour compiler, mais même avec NDK-build, j'ai le même problème. J'ai également vérifié que les données de pixel que je reçois des textures sont valides à 100% (je les ai jetées en PNG sur la carte SD pendant le débogage).

Toute aide est appréciée.

+0

Je pense que vous allez devoir le réduire à un bloc de code particulier qui rompt avec l'optimisation avant que d'autres puissent vraiment vous aider. Si vous utilisez GCC 4.4.x dans un NDK récent, vous pouvez varier les optimisations dans le fichier source pour le réduire: http://gcc.gnu.org/onlinedocs/gcc/Function-Specific-Option-Pragmas .html # Function-Specific-Option-Pragmas –

+0

Suite à un conseil donné par un collègue, j'ai activé les optimisations sur tous les fichiers, tout en les désactivant sur tout fichier suspect pouvant causer le problème. Je l'ai donc fait sur mon fichier de gestion de texture, qui, après avoir testé, a résolu le problème. –

Répondre

0

Apparemment, certains compilateurs peuvent optimiser vos fichiers de façon incorrecte et provoquer ces types de bogues graphiques. Si vous avez un bug qui ne se produit pas sur d'autres plateformes, comme dans mon cas, ce bug OpenGL, vous pouvez le résoudre sur Android si vous désactivez d'abord toutes les optimisations sur tous vos fichiers, puis les réactivez séquentiellement jusqu'à vous trouvez le fichier source responsable de votre bug. Dans mon cas c'était un fichier de textures OpenGL qui était en quelque sorte mal compilé.

Questions connexes