スワップチェーン

コンピュータグラフィックスシステムで使用される仮想フレームバッファのシリーズ

コンピュータグラフィックスにおいてスワップチェーンスワップチェーンとも呼ばれる)は、グラフィックスカードとグラフィックスAPIフレームレートの安定化、スタッターの低減、その他様々な目的で使用する一連の仮想フレームバッファです。これらの利点のため、多くのグラフィックスAPIはスワップチェーンの使用を必須としています。スワップチェーンは通常、グラフィックスメモリ内に存在しますシステムメモリ内にも存在する場合があります。2つのバッファを持つスワップチェーンは、一種のダブルバッファです。

関数

スワップチェーン
トリプルバッファリングされたスワップチェーンのグラフィカルな表現。

すべてのスワップ チェーンには、少なくとも 2 つのバッファーがあります。最初のフレームバッファーであるスクリーンバッファーは、ビデオカードの出力にレンダリングされるバッファーです。残りのバッファーはバックバッファーと呼ばれます。新しいフレームが表示されるたびに、スワップ チェーンの最初のバックバッファーがスクリーンバッファーに置き換わります。これはプレゼンテーションまたはスワッピングと呼ばれます。前のスクリーンバッファーや他のバックバッファー(存在する場合)に対して、さまざまなアクションが実行される場合があります。スクリーンバッファーは、単に上書きされることもあれば、スワップ チェーンの最後に戻されてさらに処理されることもあります。実行されるアクションはクライアントアプリケーションによって決定され、API に依存します。

ダイレクト3D

Microsoft Direct3DはSwapChainクラスを実装しています。各ホストデバイスには少なくとも1つのスワップチェーンが割り当てられており、クライアントアプリケーションによって他のスワップチェーンが作成されることもあります。[1] APIは、コピー、破棄、反転の3つのスワップ方法を提供します。SwapChainが反転に設定されている場合、スクリーンバッファは最後のバックバッファにコピーされ、その後、既存のすべてのバックバッファがチェーン内で前方にコピーされます。コピーが設定されている場合、各バックバッファは前方にコピーされますが、スクリーンバッファは最後のバッファにラップされず、変更されません。バックバッファが1つしかない場合、反転は機能しません。これは、スクリーンバッファが表示される前に、唯一のバックバッファにコピーされるためです。破棄モードでは、ドライバーが最適な方法を選択します。[2]

トリプルバッファリングとの比較

Direct3D のコンテキスト以外では、トリプル バッファリングとは、アプリケーションが最も最近更新されていないバック バッファに描画できるようにする手法を指します。これにより、アプリケーションは、フレームの描画ペースやフレームがディスプレイに送信されるペースに関係なく、常にレンダリングを続行できます。トリプル バッファリングでは、1 つのフレームがディスプレイに送信される間に 2 つ以上の新しいフレームが完全にレンダリングされると、フレームが表示されずに破棄される可能性があります。対照的に、Direct3D のスワップ チェーンは厳密な先入れ先出しキューであるため、新しいフレームが利用可能であっても、アプリケーションによって描画されるすべてのフレームが表示されます。Direct3D は最新のバッファ スワップ戦略を実装しておらず、Microsoft のドキュメントでは、3 つのバッファで構成される Direct3D スワップ チェーンを「トリプル バッファリング」と呼んでいます。上で説明したトリプルバッファリングは、ゲームなどのインタラクティブな目的には優れていますが、各フレームのデコードにかかる時間が大きく変動する可能性があるビデオのフレームを表示するなどのタスクには、3つ以上のバッファを持つDirect3Dスワップチェーンの方が適している場合があります。[3]

参考文献

  1. ^ 「SwapChainクラス」。Microsoft 。 2009年10月30日閲覧
  2. ^ 「スワップチェーン」. neXe . 2015年5月16日閲覧。
  3. ^ 「トリプルバッファリング:私たちが愛する理由」AnandTech。2010年4月7日時点のオリジナルよりアーカイブ。 2014年5月27日閲覧
「https://en.wikipedia.org/w/index.php?title=スワップチェーン&oldid=1325144630」より取得