マルチバッファリング
マルチバッファリングは2つ以上のバッファを使用する方法です。基本動作は次のようになります。マルチバッファリングでは画面に表示しているフロントバッファと描画作業を実際に行っている複数のバックバッファを持ちます。バックバッファで描画処理が完了するとバックバッファを画面に表示しているフロントバッファと置き換えます。
1フロントバッファ、1バックバッファの場合ダブルバッファリングといい、1フロントバッファ、2バックバッファの場合トリプルバッファといいます。
マルチバッファを使用することで以下の望まない現象を防ぐことができます
- アイテムの描画プロセスが表示されてしまう
- オーバーラップ処理時の画面のチラツキ
- ティアリングの発生
動作詳細
マルチバッファリングではひとつ以上のバッファを使用します。そのため描画処理中も画面上には描画完了済みの画像が表示されたままです。描画処理が始まると、まずフロントバッファの画像はバックバッファにコピーされます。次にこのバックバッファ上で描画処理が加えられていきます。描画処理が完了すると、バックバッファがフロントバッファとなり画面に表示されます。このとき通常書き換えが必要になった部分のみディスプレイコントローラによって書き換えられます。
この書換の時にモニターの走査線に注意しないとティアリングが発生してしまいます。なのでバックモニタをフロントモニタに書き換える時はモニタの走査線のタイミングに合わせなければなりません。
(ティアリング)
ダブルバッファリング
ダブルバッファリングではフロントバッファとバックバッファがひとつづつ利用可能です。描画処理が始まると、まずフロントバッファの画像がバックバッファにコピーされます。バックバッファの描画処理が完了すると、バックバッファはフロントバッファに書き換えられディスプレイに表示されます。
上で説明したように、このバックバッファとフロントバッファの切替のタイミングはモニターの走査線のタイミングに合わせるとティアリング発生を防ぐことができます。このためダブルバッファリングのトリプルバッファリングに対する欠点は、走査線のタイミングに合わせることによるディスプレイへの表示の遅延または走査線のタイミングに合わせない場合はティアリングの発生可能性が高くなってしてしまうことです。
トリプルバッファリング
トリプルバッファリングではフロントバッファが1つとバックバッファが2つ利用可能になっています。バックバッファを2つ持つことで描画処理とディスプレイコントローラの走査線のタイミングのズレに対してダブルバッファリングと比較して2倍の冗長性を確保することができティアリングの発生を防ぐことに長けます。
使用要件
マルチバッファリングを利用するにあたっての要件のリストです。
- ディスプレイコントローラがマルチフレームバッファに対応している
- マルチバッファに必要なメモリ領域がある
使用制限
残念ながらマルチバッファリングは仮想スクリーン機能と同時に利用することはできません。