Je travaille sur un jeu et je veux créer des miniatures de chaque niveau afin que je puisse les utiliser dans un menu. Je le fais avec CCRenderTexture comme ceci:CCRenderTexture saveToFile prend une grande quantité de mémoire
CCRenderTexture *renderer = [CCRenderTexture renderTextureWithWidth:bounds.size.width height:bounds.size.height];
ScreenShotLayer *scene = [[ScreenShotLayer alloc] init];
[renderer begin];
[scene visit];
[renderer end];
[renderer saveToFile:[NSString stringWithFormat:@"level%@.png", level.levelId] format: kCCImageFormatPNG];
Tout cela fonctionne bien et mon image est enregistrée, mais il faut une énorme quantité de mémoire et ne le libère. Sans sauvegarder ces données, mon jeu prend 8 Mo de RAM. Lorsque je sauvegarde l'image, il faut plus de 430 Mo.
Si je laisse tout pareil et que je commente simplement l'appel saveToFile
, je suis revenu à mes 8 Mo d'utilisation de la mémoire. J'ai debugged ceci avec l'outil de fuites et il ne trouve aucune fuite.
Est-ce un problème de cadre? Y a-t-il une meilleure façon de gérer cela? Est-ce que je fais quelque chose de stupide?
Mon jeu est entièrement open source et vous pouvez l'obtenir au https://github.com/zgrossbart/bridges. Ce code se passe dans LevelMgr.mm.
Merci pour l'aide,
Zack
Avez-vous testé cela sur un appareil actuel? – LearnCocos2D
Oui, j'ai. Je vois ce même comportement lors des tests sur un vrai iPhone 4s ou mon iPad 3. –