スワップチェーン

提供: MonoBook
ナビゲーションに移動 検索に移動

スワップチェーン英語:Swap Chain)とは、主にコンピューターグラフィックスで用いられる1つのフロントバッファと、1つ以上のバックバッファで構成されるフレームバッファを管理するための機構(コレクション)である。

概要[編集 | ソースを編集]

1つのフロントバッファと1つのバックバッファ(計2つ)という最小構成のスワップチェーンは「ダブルバッファ」と呼ばれる。

ダブルバッファの場合は単純なスワップであるが、 トリプルバッファ以上になるとバッファの遷移がリング状になるので、 それを「スワップ操作」だけでグルグル回るようにしたものを「スワップチェーン」と呼ぶことが多い。

実装[編集 | ソースを編集]

githubに転がっているオープンソースの各種フレームワークではどのようにスワップチェーンを実装しているのか眺めてみた。

リングバッファ[編集 | ソースを編集]

ほとんどスワップチェーンは「リングバッファ」で実装されているようだ。

フロントバッファ バックバッファ1 バックバッファ2
1フレーム目 A B C
2フレーム目 B C A
3フレーム目 C A B

キュー[編集 | ソースを編集]

一部の実装では「キュー」を用いてものもあった。

動画の切り出し[編集 | ソースを編集]

一般的に動画のデコードは非常に重たい処理であり、1フレーム単位で静止画を取得しようとするとリアルタイムでは厳しい結果になることが多い。基本的に動画はキーフレームからの差分で表現されるので、連続再生ではない場合はどうしても重くなる。

そこで巨大なスワップチェーンを生成し、別スレッドで動画から一定フレーム数を先読み的に静止画としてそこへ書き出しておく構造にすることでサクサクと静止画を取得できるようになる。ゲーム内のテレビなどに動画をテクスチャとして貼り付けるなどの用途でよく使われる。

関連項目[編集 | ソースを編集]