Ok, j'ai pu obtenir le code générateur de particules retour ensemble à la conférence de 360 iDev. Je doit mettre ce projet sur le plateau parce que je suis soutenu dans mon travail payant, mais je vais le mettre là-bas pour quiconque est intéressé.
Tout d'abord, laissez-moi vous dire que je ne suis pas un expert OpenGL. J'ai écrit ce pour m'aider à apprendre OpenGL et des systèmes de particules mieux, mais il est presque certain qu'il ya place à amélioration dans de nombreux endroits.
Deuxièmement, il ya quelques bugs Doozie couple ici que l'empêcher d'être prêt pour la production. D'abord et avant tout, c'est que toute tentative pour libérer les particules se retrouvent dans une boucle infinie. La mémoire pour les particules n'est pas libéré, il est constamment réutilisée. Il ya deux listes chaînées, qui maintient les particules qui sont visibles, et une autre de tenir ceux qui ne sont plus visibles. Quand une particule atteint la fin de sa durée de vie, il est déplacé d'une liste à l'autre. Quand une nouvelle particule est nécessaire, on est saisi de la piscine s'il ya un là-bas. De cette façon, nous évitons la surcharge de l'allocation mémoire constante et désallocation. Mais, quand la particule est fait émettre, je voudrais la possibilité de libérer la mémoire, mais en ce moment, qui provoque une boucle infinie noueux.
Troisièmement, l'application de l'échantillon met tout un tas d'émetteurs dans un tableau. Si vous touchez l'écran, il indique le courant d'émetteur d'arrêter l'émission, et raconte l'un à côté de départ. Quand il arrive à la fin, elle raconte le dernier à s'arrêter, et remonte à dire la première à repartir, mais quand cela arrive, nous obtenons une question affirmation pthread verrouiller où les deux fils sont chacun attend que l'autre, provoquant l'application de geler. Je ne suis pas de créer manuellement des threads, donc traquer celui-ci pourrait être vraiment dur.
Vous pouvez trouver le projet Google Code juste ici.. Si vous préférez ne pas utiliser subversion, vous pouvez télécharger la version initiale comme un fichier zip ici.
Aucun commentaire:
Enregistrer un commentaire