More Related Content Similar to cocos2d + 非同期 (20) cocos2d + 非同期8. cocos2d
RunLoop
cocos2d CADisplayLink
17. 1/60
VSYNC
1/60 → 2/60(1/30) → 3/60(1/20)
→ 4/60(1/15) → ...
26. “
RunLoop Main Queue
Global Queue Serial Queue ”
iOS 4
Editor's Notes \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