Forums Développement Multimédia

Aller au contenu

Pb de performance avec Starling

CODE Actionscript

8 réponses à ce sujet

#1 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1918 messages

Posté 22 June 2013 - 06:21 AM

Bonjour,

j'ai réalisé sur un Galaxy nexus (Android) un test :

for(var i:uint=0; i<500; i++) {
circle.graphics.clear();
circle.graphics.beginFill(0xFF0000);
circle.graphics.drawCircle(20, 20, 20);
circle.graphics.endFill();
var bmd:BitmapData = new BitmapData(40, 40, true, 0x0);
bmd.draw(circle);
var bitmap:Bitmap = new Bitmap(bmd);
var texture:Texture = Texture.fromBitmap(bitmap);
ball[i] = new Image(texture);
addChild(ball[i]);
}
addEventListener(starling.events.Event.ENTER_FRAME, enterFrameHandler);

avec Starling ça tourne à 15 fps, avec un code équivalent en utilisant la displayList classique ça tourne à 30 fps

Je ne comprends pas pourquoi ça rame avec Starling (mode debug désactivé) ?
merci

#2 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 22 June 2013 - 08:40 AM

Pourquoi fais tu 500 fois la meme chose ?

circle.graphics.clear();
circle.graphics.beginFill(0xFF0000]);
circle.graphics.drawCircle(20, 20, 20);
circle.graphics.endFill();
 

...
apres on verra ce que dit le reste :)

#3 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1918 messages

Posté 22 June 2013 - 08:46 AM

pour avoir 500 cercles de couleurs différentes
en fait c'est
circle.graphics.beginFill(col[i]);

je mets 2 apk pour tester

Fichier(s) joint(s)

  • Fichier joint  test.zip   114.06 Ko   15 téléchargement(s)


#4 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 22 June 2013 - 10:22 AM

montre le code, celui qui est vraiment ecrit que tu dis que tu fais mais le code devrais te retourner une erreur .

circle.graphics.beginFill(0xFF0000]);
 
n'est pas la meme chose que

circle.graphics.beginFill(0xFF0000]);
 

Et en plus maintenant tu me parles de récupère la couleur dans un tableau ...


puis un for propre :

var i:int = 0;
var bmpd:BitmapData;
var bmp:Bitmap;
var texture:Texture;
//.....
for(;i<count;i++){
}

 

te feras pas de mal ...

#5 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1918 messages

Posté 22 June 2013 - 11:00 AM

tu peux tester les apk, pour voir si le problème ne vient pas du téléphone ?
j'ai simplifié le code pour expliquer, le pb ne vient pas de là.

#6 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 22 June 2013 - 11:36 AM

C'est les test (if elseif... ) dans ton while dans la fonction moveBall te la class Aquarium qui pompe !!!

(entre nous, j'installe pas une application qui n'est pas fiable sur mon telephone .... )

#7 tlecoz

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3486 messages

Posté 22 June 2013 - 13:10 PM

Hello !

Je ne suis pas certain de ce que je dis car je n'ai jamais utilisé Starling pour autre chose que des tests mais je suppose que ce qui ne plait pas trop à ton téléphone c'est le nombre de texture chargé dans la RAM

Je ne sais pas comment fonctionne le processus de texturing dans Starling, mais je suppose que dans ton cas, il créé 500 objets textures - ce qui est énorme - ; idéalement, tu devrais dessiner tout tes cercles dans un seul BitmapData de 2048x2048 , créer une texture à partir de ce bitmapData , et récupérer les différentes images en jouant sur les UV.

Cela devrait nettement mieux tourner ! :)

Dis nous ce que ça donne !

#8 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1918 messages

Posté 24 June 2013 - 20:07 PM

@tlecoz

c'est bien le nombre de textures qui pose problème, avec un seul BitmapData de 2048x2048 et TextureAtlas, ça tourne à 60 fps.
Je joins une apk pour voir la différence.

Fichier(s) joint(s)



#9 tlecoz

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3486 messages

Posté 25 June 2013 - 09:17 AM

Cool !

Content que ça fonctionne ! :)



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)