▼Androidメモ▼
VSyncとトリプルバッファリング

VSync
「VSync(垂直同期信号)」はディスプレイの描画タイミングを計るために定期的に通知される信号のこと。VSyncを利用し、アプリの描画速度をディスプレイの描画速度に合わせることで、より滑らかなアニメーションを実現することができる。

多くのAndroid端末のディスプレイは1/60秒で1枚の絵を描画している。「毎秒60フレーム(60Hz)」は、1フレームの処理時間として「16ms」を持っていることを意味する。

VSyncなし(ICS)
「ICS」はVSyncは利用していないため、アプリの1フレームの描画処理はVSync信号とは関係なく開始される。そのため、次のVSync信号までの時間は「16ms以下」の不定な時間になり、描画が間に合わない時は、前フレームと同じ絵を描画することになる。

VSyncあり(JB)
「JB」はVSyncを利用しているため、アプリの1フレームの描画処理がVSync信号と同時に開始される。そのため、次のVSync信号までの時間は「16msいっぱい」利用できるようになり、描画が間に合わないことが少なくなる。



トリプルバッファリング
VSync以外にも、「トリプルバッファリング」とよばれる仕組みで、JBは滑らかなアニメーションを実現している。

ダブルバッファリング(ICS)
「ICS」では以下のように「ダブルバッファリング」を利用している。「ディスプレイへのバッファの表示」と「CPUとGPUによるバッファへの描画」を同時に行っている。



描画処理に16ms以上かかると、以下のようにジャンクになり、アニメーションが滑らかでなくなる。


トリプルバッファリング(JB)
JB では以下のように「トリプルバッファリング」を利用している。バッファを3つ持つことによって、「ディスプレイへのバッファの表示」と「GPUによるバッファへの描画」と「CPUによるバッファへの描画」を同時に行うことが可能になる。結果としてジャンクを少なくすることができる。



−戻る−