スワップチェーンとは
スワップチェーンは、実際のモニターまたは他のデバイスに表示される前にイメージをレンダリングするために使用される一連のフレームバッファー、またはコンピューターメモリ内の場所です。 スワップチェーンには常に少なくとも2つのフレームバッファーがあります。これは、通常、最初の、またはアクティブなバッファーが、現在ディスプレイに表示されているバッファーとして識別されるためです。 1つのフレームバッファーが表示されている間に、次のバッファーをレンダリングして表示用に準備し、必要に応じてデバイスにスワップできます。 スワップチェーンを使用すると、ハードウェアとソフトウェアのタイミングの競合が原因で発生する問題の一部、およびディスプレイデバイスに直接レンダリングするために表示されるグラフィックアーティファクトを排除できます。
画像がモニターに表示される方法は、実際には、指定されたメモリ領域に正しい数字のシーケンスを配置するだけの問題です。 このメモリ領域にあるものは、毎秒数回画面に描画されます。 画面は、左上隅から右下隅まで水平線で描かれます。 画面が次のフレームを開始する瞬間、つまり、画面の右下隅から左上隅に移動する瞬間は、垂直帰線と呼ばれます。
スワップバッファの実装は、垂直リトレース中にのみ画面に描画します。 このタイミングがオフの場合、またはフレームのレンダリング中にプログラムが画面に描画しようとすると、涙として知られるグラフィカルな異常が発生する可能性があります。 これは、表示デバイスのメモリ内の画像がレンダリングの途中で突然変更され、ディスプレイの片側に最後のフレームが表示され、画面の残りの部分に新しいフレームが表示される場合に発生します。
シーンを事前にフレームバッファにレンダリングすることにより、表示される次のフレームはすでに準備されており、表示メモリにすばやくプッシュして表示できます。 1つの画像が表示されている間、次の画像は非アクティブフレームバッファー(バックバッファーとも呼ばれます)に描画されます。 これにより、スムーズなアニメーションと視覚効果が作成され、ティアリングを防ぐために正確にタイミングを合わせることができます。
「スワップチェーン」という用語は、アクティブなフレームバッファの前に描画されるフレームの数に応じて、ダブルバッファリングまたはトリプルバッファリングとしてより一般的に知られています。 ナノ秒またはミリ秒のタイミングアルゴリズムを使用することは、スワップチェーンを使用してモニターの最大フレームレートを超えないようにし、プログラムがシステム上の独自の処理とリソースを調整できるようにするために不可欠です。 適切に実装されている場合、スワップチェーンを使用すると、ディスプレイデバイスのプロパティやアニメーションの単一フレームのレンダリングにかかる時間に関係なく、スムーズなアニメーションが得られます。