Dans une tentative de création d'une barre de chargement pour un jeu iPhone, je développe (en utilisant CocOS2D), je voulais utiliser une approche multithreadée. P>
Un thread affiche un écran de chargement et exécute la boucle d'événement de l'application principale, tandis qu'un nouveau thread charge silencieusement toutes les sprites en arrière-plan (via Spritewithfile Strong>), puis les ajoute à une couche. P >
Je crée le nouveau thread à l'aide de la méthode Le problème que je suis confronté est que tous les appels OpenGL (tels que ceux trouvés dans la méthode Qu'est-ce qui doit être fait pour permettre à plusieurs threads de faire des appels opengl sur l'iPhone à l'aide de Cocos2D-iPhone. P>
4 Réponses :
Je veux faire ça aussi. P>
Je commence à partir de Ce fil . P>
PS: Cette réponse est très ancienne, maintenant je ne suis pas sûr que la chargement de texture asynchrone soit aussi utile que depuis une fois depuis que iOS5 a ajouté des téléchargements de texture "gratuits" via cvopenglestextureces code>. Bien sûr, vous pouvez toujours (& DO) charger vos actifs dans un thread secondaire, mais donner ce fil un
eaglcontext code> ne semble pas si nécessaire maintenant. P>
Lien dans la première réponse: 1. Je reçois un avertissement de logiciels malveillants à partir du navigateur. Quand je dis toujours à l'ignorer 2. J'obtiens 404.
cocos2d Meilleures pratiques Recommander contre l'utilisation de Nstimer et je suppose que le la même chose s'applique aussi aux threads. Vous devriez probablement utiliser des cocos ' Objet de la minuterie . Cela laissera la gestion du fil à Cocos et doit également vous permettre d'accéder au contexte graphique correct. Hth. P>
Pour l'enregistrement, le nouveau thread doit exécuter les deux lignes suivantes pour pouvoir utiliser l'API OpenGL à partir d'un thread concomitable:
EAGLContext *k_context = [[[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1 sharegroup:[[[[Director sharedDirector] openGLView] context] sharegroup]] autorelease]; [EAGLContext setCurrentContext:k_context];