日別アーカイブ: 2012年8月16日

iOS CADisplayLink とフレームレート

DisplayLink の描画呼び出しは基本的に 1/60 sec 単位で行われます。

わかりやすく言えば WaitVSync です。
処理が落ちが発生した場合も、次の VSync 相当のタイミングを待ってから
呼び出しが行われています。

そのため問題となっていたのが frameInterval を 2に設定した場合で、
当初この API で呼ばれるタイミングを勘違いしていました。

        (A)     (B)     (C)     (D)
--------------------------------------------
frame 0 draw    draw    draw    draw
frame 1
frame 2 draw
frame 3         draw    draw
frame 4 draw            draw    draw
frame 5         draw
frame 6 draw            darw    darw

(A) = 処理落ちなし
(B) = 処理落ちした場合の実際の動作
(C)/(D) = これは間違い

基本的に 2 frame に一度呼ばれますが、処理落ちが発生した場合は
次の VSync 相当のタイミングで呼ばれます。
上の (B) の動作となり、(C) や (D) にはならないようです。