トリプル・バッファリング・レイヤー

ある種のアプリケーションでは、レイヤーを使用して静的な背景の上部に「ライブ」グラフィック・オブジェクトを描画し、それを操作できます。
このタイプのアプリケーションでは、背景に表示するグラフィック・オブジェクトは静的なもので、ユーザーやアプリケーションが変更することはできません。つまり、グラフィックの背景を構成するすべてのレイヤーが描画できるのは 1 回のみです。これでアプリケーションの描画速度が上がります。
このプロセスをトリプル・バッファリングと呼びます。レイヤーが追加のオフスクリーン・イメージに描画されるためこう呼びます。その後でビューを再描画する必要がある場合は、グラフィック・オブジェクトを再描画する代わりにこのイメージを使用します。
メモ
ダブル・バッファリングとは異なり、トリプル・バッファリングはちらつきの除去ではなく、描画速度を上げるために使用します。ダブル・バッファリングとトリプル・バッファリングは同時に使用できます。
IlvManagerView のインスタンスの場合は、特定数のレイヤーをトリプル・バッファリングの一部に指定できます。
これは、IlvManagerView の次のメソッドで行います。
void setTripleBufferedLayerCount(int n)  
このメソッドを呼び出すと、インデックスが 0 と n-1 (n 番目の背景レイヤー) の間のレイヤーはトリプル・バッファリングされます。
メソッドが 1 回呼び出され、ビューが 1 回ペイントされると、トリプル・バッファー・イメージのみが表示されるため、グラフィック・オブジェクトのその後の変更は画面上にレンダリングされません。
トリプル・バッファーが更新されるのは、次の場合のみです。
  • ビューのトランスフォーマーが変更されたとき (ビューをズームまたはパンしているとき)。
  • レイヤーを追加または削除したとき。
  • トリプル・バッファーされたレイヤー数を変更したとき。
  • トリプル・バッファーされたレイヤー数の可視性を変更したとき。
  • トリプル・バッファーされたレイヤーから、グラフィック・オブジェクトを追加または削除したとき。
  • トリプル・バッファー済みのレイヤーでトリプル・バッファーされたオブジェクトを変更するため、 applyToObject を呼び出した時。
    メモ
    形状変更インタラクターなどのインタラクターで、この機能を呼び出します。このため、トリプル・バッファーされたレイヤーのグラフィック・オブジェクトをマウスを使用して形状変更すると、トリプル・バッファーは無効になります。
  • トリプル・バッファーされたレイヤーのグラフィック・オブジェクトの可視性を変更したとき。
  • グラフィック・オブジェクトが配置されたトリプル・バッファー・レイヤーを変更したとき。
理由のいかんにかかわらず、トリプル・バッファーを更新する必要のあるときは、これらのメソッドが使用できます。
void invalidateTripleBuffer(boolean repaint)  
void invalidateTripleBuffer(IlvRect rect, boolean repaint)  
要約すると、アプリケーションでトリプル・バッファリングを使用するのは、背景レイヤーの内容が静的である場合、およびアプリケーションが頻繁にユーザーに対してズームやパンを要求しない場合です。