際際滷

際際滷Share a Scribd company logo
Optymalizacja grafiki oraz
 generowania grafiki na
   urzdzena mobilne
Performance, a grafika
 Generlanie zawsze nalezy korzystad z trybu GPU
 Elementy graficzne powinny byc bitmapami
 Grafika wektorowa, to tw坦j wr坦g
 Korzystanie ze smoothing nie ma wpywu, ale po co?
 Nie u甜ywamy cacheAsBitmap
 Zamykanie grafiki nawet w du甜e ilosci Sprite坦w nie ma
  wpywu na performance, o dziwo mo甜e j poprawid
 Uproszczona i spaszczona display lista
 Unikajmy tworzenia obiekt坦w w locie
Wsp坦dzielenie grafiki
 Wszdzie gdzie to mo甜liwe korzystajmy z jednej
  bitmapdata
 Ogromny wpyw na performance
 Do 150 obiekt坦w jednoczenie, w
  pynnej, zindywidualizowanej animacji z u甜yciem
  TweenMax
Wsp坦dzielenie animacji
          poklatkowej

 Unikamy metody draw na rzecz copyPixel
 W przyp animacji poklatkowej, wszdzie gdzie to
  mo甜liwe korzystajmy z jednej bitmapdata i wycznie
  w niej manipulujemy obrazem poprzez copyPixels
 W坦wczas wszystkie inne elemnty wsp坦dzielce dane
  BitmapData bd animowane jednoczenie
 OGROMNY wzrost prdkoci
 MINUS  wszystkie elementy animuj si w
  jednakowym rytmie
Nie renderuj je甜eli nie musisz
 W przypadku gdy jakikolwiek element jest akurat poza
  scen  visible = false
 Object Pooling  nie tw坦rz obiekt坦w w locie!
 Nie usuwaj obiekt坦w w locie, chyba, ze na pewno ju甜 ich
  nie bdziesz potrzebowa
 Visible = false szybsze od removeChild();
Nie korzystaj z framework坦w
      je甜eli nie musisz
Generowanie grafiki
Stw坦rz raz , korzystaj na
wszystkich urzdzeniach!
Grafika wektorowa.
                  Tym razem przyjaciel.
public static function SpriteToBitmap(_class:*, _horizontal:Boolean =
true, _shadow:int = 0):Bitmap{
     var c:*;
     var bmp:Bitmap;
     if(spritesArr.indexOf(_class) == -1){
           generateNewBmpData();
     }else{
           var cn:int = spritesArr.indexOf(_class);
           bmp = new Bitmap(bmDatasArr[cn]);
     }
return bmp;
}
Grafika wektorowa.
                  Tym razem przyjaciel.
private static function generateNewBmpData(_class :*, _horizontal :Boolean, _shadow:int
) :void{
           var rescaleR:Number = _horizontal ? RESCALE_RATIO_W: RESCALE_RATIO_H;
           c = new _class();
           var mat:Matrix = new Matrix()
           mat.scale(rescaleR, rescaleR);
           var w:Number;
           var h:Number;
           w = c.width*rescaleR + _shadow* rescaleR;
           h = c.height*rescaleR+ _shadow* rescaleR;

         var bmd:BitmapData = new BitmapData(w, h, true, 0xfff);
         spritesArr.push(_class);
         bmDatasArr.push(bmd);
         bmd.draw(c, mat);
         bmp = new Bitmap(bmd);

}
Inne rzeczy na kt坦re warto zwr坦cid uwag.
                GPU MODE
 Czas generowania
 Filtry w GPU
 Pamid RAM

More Related Content

Mobile graphics optimization

  • 1. Optymalizacja grafiki oraz generowania grafiki na urzdzena mobilne
  • 2. Performance, a grafika Generlanie zawsze nalezy korzystad z trybu GPU Elementy graficzne powinny byc bitmapami Grafika wektorowa, to tw坦j wr坦g Korzystanie ze smoothing nie ma wpywu, ale po co? Nie u甜ywamy cacheAsBitmap Zamykanie grafiki nawet w du甜e ilosci Sprite坦w nie ma wpywu na performance, o dziwo mo甜e j poprawid Uproszczona i spaszczona display lista Unikajmy tworzenia obiekt坦w w locie
  • 3. Wsp坦dzielenie grafiki Wszdzie gdzie to mo甜liwe korzystajmy z jednej bitmapdata Ogromny wpyw na performance Do 150 obiekt坦w jednoczenie, w pynnej, zindywidualizowanej animacji z u甜yciem TweenMax
  • 4. Wsp坦dzielenie animacji poklatkowej Unikamy metody draw na rzecz copyPixel W przyp animacji poklatkowej, wszdzie gdzie to mo甜liwe korzystajmy z jednej bitmapdata i wycznie w niej manipulujemy obrazem poprzez copyPixels W坦wczas wszystkie inne elemnty wsp坦dzielce dane BitmapData bd animowane jednoczenie OGROMNY wzrost prdkoci MINUS wszystkie elementy animuj si w jednakowym rytmie
  • 5. Nie renderuj je甜eli nie musisz W przypadku gdy jakikolwiek element jest akurat poza scen visible = false Object Pooling nie tw坦rz obiekt坦w w locie! Nie usuwaj obiekt坦w w locie, chyba, ze na pewno ju甜 ich nie bdziesz potrzebowa Visible = false szybsze od removeChild();
  • 6. Nie korzystaj z framework坦w je甜eli nie musisz
  • 7. Generowanie grafiki Stw坦rz raz , korzystaj na wszystkich urzdzeniach!
  • 8. Grafika wektorowa. Tym razem przyjaciel. public static function SpriteToBitmap(_class:*, _horizontal:Boolean = true, _shadow:int = 0):Bitmap{ var c:*; var bmp:Bitmap; if(spritesArr.indexOf(_class) == -1){ generateNewBmpData(); }else{ var cn:int = spritesArr.indexOf(_class); bmp = new Bitmap(bmDatasArr[cn]); } return bmp; }
  • 9. Grafika wektorowa. Tym razem przyjaciel. private static function generateNewBmpData(_class :*, _horizontal :Boolean, _shadow:int ) :void{ var rescaleR:Number = _horizontal ? RESCALE_RATIO_W: RESCALE_RATIO_H; c = new _class(); var mat:Matrix = new Matrix() mat.scale(rescaleR, rescaleR); var w:Number; var h:Number; w = c.width*rescaleR + _shadow* rescaleR; h = c.height*rescaleR+ _shadow* rescaleR; var bmd:BitmapData = new BitmapData(w, h, true, 0xfff); spritesArr.push(_class); bmDatasArr.push(bmd); bmd.draw(c, mat); bmp = new Bitmap(bmd); }
  • 10. Inne rzeczy na kt坦re warto zwr坦cid uwag. GPU MODE Czas generowania Filtry w GPU Pamid RAM