@splhack
cocos2d +
Loading
Loading.......
@yuroyuro: 31 May 2011            http://twitter.com/#!/yuroyoro/status/75399664496680960
cocos2d          RunLoopcocos2d             CADisplayLink
CADisplayLinkRunLoop
VSYNC
VSYNC
VSYNCVertical Synchronizing signal
VRAM
VSYNC
CADisplayLinkRunLoop VSYNC
CADisplayLinkiOS      1/60      60FPS16.666
1/60             VSYNC1/60 → 2/60(1/30) → 3/60(1/20)      → 4/60(1/15) → ...
RunLoop          (Blocking)
RunLoop          (Blocking)
RunLoop
cocos2d CCTextureCache - (void)addImageAsync:target:selector:
addImageAsync••                       GL API    (EAGLContext sharegroup)
addImageAsync••OpenGL ES•glTexImage2D (        GL          )
addImageAsync•
“RunLoop        Main QueueGlobal Queue                Serial Queue   ”       iOS 4
Grand Central Dispatch   GCD          iOS 4
Grand Central Dispatch         Global Queue         Serial QueueaddImageAsync
Grand Central Dispatch
cocos2d + 非同期
cocos2d + 非同期
cocos2d + 非同期
cocos2d + 非同期
Upcoming SlideShare
Loading in …5
×

cocos2d + 非同期

7,321 views

Published on

cocos2d 勉強会 (2011/06/20)
http://togetter.com/li/151941
「非同期」のスライドです

Published in: Technology, Art & Photos
1 Comment
5 Likes
Statistics
Notes
  • This slide uses http://www.blazingpc.com/forum/showthread.php?t=12379 image. thanks.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
7,321
On SlideShare
0
From Embeds
0
Number of Embeds
587
Actions
Shares
0
Downloads
14
Comments
1
Likes
5
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 非同期話の前に、メインループの話。cocos2dでもRunLoopベース。\n\n
  • \n
  • \n
  • オブジェクトを動かしているシーンで、VSYNC無視して画面更新すると、\nオブジェクトがぶったぎれて見える\n\n
  • \n
  • 垂直同期信号って何? ブラウン管テレビの時代までさかのぼります\nビームが左上から右下にかけて徐々に動いて、VRAMをブラウン管に反映していく\n一番下まで行って、一番下から一番上にもどるとこを垂直帰線区間。この間、絵は更新されない\n
  • ビームが戻る垂直帰線区間内に画面を更新させるためにVSYNCは存在する\n垂直帰線区間外にVRAMを更新すると残念なことになる。\niPhoneでも基本同じ。ブラウン管じゃなくて液晶ディスプレイ。\n
  • CADisplayLinkを使うと、RunLoopがVSYNCに同期してループする\n
  • 1回のループの時間が1/60秒\n
  • 1/60 ぬめぬめ動く\n
  • データをロードしてRunLoopをブロック\nフレームレート低下どころの話ではない\n画面止まっちゃう\n
  • \n
  • まずやっかいなのがテクスチャを非同期で読み込む方法。でもcocos2dだと簡単です。\n
  • addImageAsyncを実際にどう使うか、この本を読んでいただくか、ぐぐってもらうとして\n
  • どういう実装になっているか\n
  • 通常メインスレッド以外でOpenGL ES APIを呼び出せば例外発生\n
  • \n
  • \n
  • \n
  • ただし、コールバックは呼び出し元ではなく、メインスレッドで呼び出される\n
  • iOS 4プログラミングブックの第5章をぜひ読んでくださいませ\n
  • \n
  • cocos2d + 非同期

    1. 1. @splhack
    2. 2. cocos2d +
    3. 3. Loading
    4. 4. Loading.......
    5. 5. @yuroyuro: 31 May 2011 http://twitter.com/#!/yuroyoro/status/75399664496680960
    6. 6. cocos2d RunLoopcocos2d CADisplayLink
    7. 7. CADisplayLinkRunLoop
    8. 8. VSYNC
    9. 9. VSYNC
    10. 10. VSYNCVertical Synchronizing signal
    11. 11. VRAM
    12. 12. VSYNC
    13. 13. CADisplayLinkRunLoop VSYNC
    14. 14. CADisplayLinkiOS 1/60 60FPS16.666
    15. 15. 1/60 VSYNC1/60 → 2/60(1/30) → 3/60(1/20) → 4/60(1/15) → ...
    16. 16. RunLoop (Blocking)
    17. 17. RunLoop (Blocking)
    18. 18. RunLoop
    19. 19. cocos2d CCTextureCache - (void)addImageAsync:target:selector:
    20. 20. addImageAsync•• GL API (EAGLContext sharegroup)
    21. 21. addImageAsync••OpenGL ES•glTexImage2D ( GL )
    22. 22. addImageAsync•
    23. 23. “RunLoop Main QueueGlobal Queue Serial Queue ” iOS 4
    24. 24. Grand Central Dispatch GCD iOS 4
    25. 25. Grand Central Dispatch Global Queue Serial QueueaddImageAsync
    26. 26. Grand Central Dispatch

    ×