2010-07-24 4 views
1

Je suis en train de faire un jeu iPhone basé sur OpenGL ES relativement simple. En testant sur l'iPhone 4, j'ai remarqué que le multitâche ne fonctionne pas. Plus précisément, l'application est automatiquement arrêtée lorsqu'elle est mise en arrière-plan (je pense que cela est dû à des appels OpenGL en arrière-plan et/ou à la non-libération de certaines ressources). Depuis le jeu est assez simple ... 20-30 niveaux courts (environ 1 min par niveau) ... Je me demande: Dans ce cas, le multitâche est-il vraiment important?Le multitâche est-il vraiment important pour les jeux iPhone simples?

Le jeu entier est basé sur OpenGL et l'interface utilisateur est très accrocheurs ... ainsi mettre fin à l'application, rechargeant, et pas à pas dans quelques écrans ne semblent être une grosse affaire. Qu'est-ce que tu penses? Dans ce cas, le multitâche de soutien est-il vraiment important?

+4

Il est spécifiquement indiqué dans la documentation qu'il vous est interdit de faire des appels OpenGL ES en arrière-plan (http://developer.apple.com/iphone/library/documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution. html). C'est pourquoi vous êtes terminé. Si cela compte ou non, c'est à vous de décider ... –

Répondre

2

Peu importe si vous voulez que vos utilisateurs vous apprécient. Ce que vous pouvez faire est le jeu en pause et d'arrêter les appels de dessin lorsque votre application obtient

- (void) applicationWillResignActive:(UIApplication *)application

et soit rester mise en pause ou reprendre le dessin dans

- (void)applicationDidBecomeActive:(UIApplication *)application

Vous devriez le faire même si votre L'application ne fonctionne pas sur un appareil multitâche, car si vous recevez une notification Push ou une notification locale, votre application sera désactivée et vous devrez mettre le jeu en pause.

2

Comme calmh références les docs, voici le paragraphe:

Ne pas faire des appels OpenGL ES à partir votre code. Vous ne devez pas créer un objet EAGLContext ou émettre des commandes de dessin ES OpenGL . En utilisant ces appels entraîneront la fin immédiate de votre application .

Vous ne savez pas pourquoi vous souhaiteriez dessiner dans ce cas de toute façon. En ce qui concerne le "passage à travers quelques écrans" ... Pourquoi ne pas enregistrer l'état actuel lors de la sortie de l'application et la restaurer plus tard de toute façon?

Questions connexes