2009-12-02 4 views
3

Je développe un jeu 2D pour l'iPhone et l'iPod Touch en utilisant OpenGL ES 1.1. Tout fonctionne bien sur l'iPhone, l'iPhone 3G et tous les modèles iPod Touch. Le jeu rend généralement les scènes à ~ 60 FPS. Cela arrive aussi sur l'iPhone 3GS, mais parfois (c'est complètement aléatoire) le 3GS baisse le framerate à environ 40 FPS et l'animation semble saccadée. Cela se produit également si l'utilisateur verrouille le téléphone et le quitte en mode veille. Je pense que cela a quelque chose à voir avec le NSTimer, car si je change le mode de déclenchement draw à la nouvelle classe CADisplayLink disponible à partir de SDK 3.1+, tout est OK sur tous les périphériques ... et sur le 3GS aussi.iPhone 3GS OpenGL étrange bug

Je ne sais pas comment résoudre ce problème et je ne souhaite pas publier mon application avec la restriction 3.1+. Il y a encore beaucoup d'utilisateurs avec des appareils 3.0.

Toute personne ayant ce problème avec l'iPhone 3GS aussi? Si oui, s'il vous plaît aidez-moi avec une solution de contournement.

Merci!

+0

J'ai eu le même problème ... me rendant fou en essayant de le réparer. J'espère que cela fonctionne! – Adam

Répondre

2

Vous pouvez utiliser les deux bibliothèques et obtenir le meilleur résultat sur les périphériques 3.0 ou 3.1. Ce serait bien puisque la version minimale de l'iPhone OS utilisée par l'AppStore est contenue dans le fichier Info.plist de votre application.

La version iPhone OS est retreivable en utilisant le code suivant d'Apple UI Device Class Reference:

float iPhoneOSVersion = [[[UIDevice currentDevice] systemVersion] floatValue]; 

if (iPhoneOSVersion >= 3.1) { 
    useNewerFramework(); 
} else { 
    useOlderFramework(); 
} 

Cependant, vous devez également vous assurer que vous définissez votre cible de déploiement dans Xcode à 3.0 ou quelle que soit la version minimum que vous souhaitez exécuter.

+0

Avez-vous rencontré le même problème sur le 3GS? –