Je travaille actuellement sur un jeu de course automobile 3D pour la plateforme iOS. J'ai dû implémenter un système de relecture, puis enregistrer cette relecture dans un fichier vidéo pour le télécharger sur YouTube.
Je n'ai que des problèmes avec la partie enregistrement, le reste est fait. Ce que je fais, c'est utiliser la glReadPixels()
commande d'OpenGL ES 1.1 pour capturer le contenu du framebuffer et créer une vidéo à partir de ces images pendant l'exécution (en utilisant le framework AVFoundation).
Le problème auquel je suis confronté est que je dois appeler glReadPixels()
chaque mise à jour, ce qui est très lent. Cela diminue le FPS d'environ 30 à seulement 2-3 ... Y a-t-il une alternative à la glReadPixels()
commande? Ou quelqu'un a-t-il créé un système de relecture et enregistré sur vidéo?
Je pense que le moyen le plus simple est d'enregistrer les actions et l'état de l'utilisateur et de l'IA pendant le jeu, pas les images réelles. Une fois le jeu terminé, soit le joueur terminant la course, soit en revenant au menu principal, il a la possibilité de regarder une relecture (ou d'en sauvegarder une) et ce n'est qu'à ce moment-là que ces actions sont utilisées pour recréer les images en lisant les actions et état via le moteur de jeu. Cela a l'avantage supplémentaire de ne pas (essentiellement) avoir à dessiner chaque image complète plusieurs fois supplémentaires pendant le jeu.
la source