差分

ナビゲーションに移動 検索に移動

スワップチェーン

1,302 バイト追加, 2021年2月2日 (火) 06:32
編集の要約なし
'''スワップチェーン'''([[英語]]:Swap Chain)とは、主に[[コンピューターグラフィックス]]で用いられる1つのフロントバッファと、1つ以上のバックバッファで構成されるフレームバッファを管理するための機構(コレクション)である。で用いられる「1つのフロントバッファ」と「1つ以上のバックバッファ」で構成される[[フレームバッファ]]を管理するための機構(コレクション)である。
1つのフロントバッファと1つのバックバッファ(計2つ)という最小構成のスワップチェーンは「== 概要 ==フロントバッファとバックバッファがそれぞれ1つ(計2つ)という最小構成のスワップチェーンは「[[ダブルバッファ]]」と呼ばれる。
[[ダブルバッファ]]の場合は単純なスワップ操作であるが、トリプルバッファ以上になるとバッファの遷移が複雑なリング状になる。それをダブルバッファ同様にスワップ操作っぽい[[API]]を叩くだけでグルグル回るようにしたものを「スワップチェーン」と呼ぶことが多い。 == 概要 垂直同期 ==ディスプレイが描画処理している最中にスワップチェーンの切り替えを行うと描画内容が狂う。このような現象を抑制するため「[[ダブルバッファ垂直同期]]の場合は単純なスワップであるが、トリプルバッファ以上になるとバッファの遷移がリング状になるので、それを「スワップ操作」だけでグルグル回るようにしたものを「スワップチェーン」と呼ぶことが多い。」を利用することが多い。
ぶっちゃけよくある「== 実装 ==[[リングバッファgithub]]」を「スワップチェーン」という方言で呼んでいるだけだな。に転がっている[[オープンソース]]の各種[[フレームワーク]]ではどのようにスワップチェーンを実装しているのか眺めてみた。
== トリプルバッファの例 =リングバッファ ===ほとんどスワップチェーンは「[[リングバッファ]]」で実装されているようだ。
{| class="wikitable"
|-
|}
4フレーム目は1フレーム目と同じになる。=== キュー ===一部の実装では「[[キュー]]」を用いてものもあった。
== 動画の切り出し ==
一般的に動画のデコードは非常に重たい処理であり、1フレーム単位で静止画を取得しようとするとリアルタイムでは厳しい結果になることが多い。基本的に動画はキーフレームからの差分で表現されるので、連続再生ではない場合はどうしても重くなる。
 
そこで巨大なスワップチェーンを生成し、別スレッドで動画から一定フレーム数を先読み的に静止画としてそこへ書き出しておく構造にすることでサクサクと静止画を取得できるようになる。ゲーム内のテレビなどに動画をテクスチャとして貼り付けるなどの用途でよく使われる。
== 関連項目 ==
* [[ダブルバッファ]]
* [[垂直同期]]
 
[[category: 3DCG]]

案内メニュー