Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ONscreen vs. OFFscreen rendering v iOS - For-Mo...

ONscreen vs. OFFscreen rendering v iOS - For-Mobile 3/2013

Slidy z mé prezentace na téma "ONscreen vs. OFFscreen rendering v iOS", která proběhla na For-Mobile iOS v březnu 2013 v prostorách Microsoft ČR.

Více o události For-Mobile: http://srazy.info/for-mobile/3293

#forMobileCZ

Tomas Jukin

March 26, 2013

Transcript

25 slides
  1. iOS Stack UIKit UIKit Core Animation Core Animation OpenGL ES

    Core Graphics GPU CPU UIButton UILabel smooth transitions 2D/3D Graphics Quartz
  2. iOS Stack UIKit UIKit Core Animation Core Animation OpenGL ES

    Core Graphics GPU CPU UIButton UILabel smooth transitions 2D/3D Graphics Quartz C language C language
  3. iOS Stack UIKit UIKit Core Animation Core Animation OpenGL ES

    Core Graphics GPU CPU Hardware Acceleration
  4. Kdy se použije OFFscreen rendering? • Core Graphics (když použiju

    cokoliv s CG*) • drawRect() metoda, i prázdná! • CALayer s shouldRasterize == YES. • CALayer s maskami (setMasksToBounds) dynamickými stíny (setShadow*). • drawText včetně Core Text. • použití group opacity (UIViewGroupOpacity).
  5. drawRect drawRect -> Core Graphics touch -> setNeedsDisplay -> redraw

    CPU & memory waste hodně tlačítek v UI naráz = smrt
  6. Závěr? Máme tedy JEN assety? NE! Je tu hybridní přístup:

    Kód -> obrázek -> assetový postup pro všechny instance
  7. GPU OFFscreen rendering! CPU OFFscreen rendering je synchronní s aplikací

    - je to zápis do bitmapy pixel by pixel OFFscreen rendering může dělat i GPU! -> render server - asynchronně Změna kontextu mezi ON a OFF je pro GPU ale strašně drahá!
  8. GPU OFFscreen rendering! důsledek: GPU může kreslit pomaleji než CPU!

    (flush + bariéra) Proto je CoreGraphics přes CPU [CALayer setShouldRasterize:] vs. CG - nutno testovat!

More Decks by Tomas Jukin

Other Decks in Programming