DirectX

おらの環境でバックバッファが正しくキャプチャーできない。
他の人の環境だと大丈夫。

  • 調査

サンプルにキャプチャ突っ込む。
サンプルでも失敗した。


Present周りが怪しい予感。
フラグにLOCKをつけるがだめ。

  • 結果

PresentのSwapEffectパラメータがDISCARDになっていた。
FLIP(もしくはCOPY)にすると大丈夫。

  • 予測とまとめ

ヘルプが長々と意味不明なので経験則から何がいいたいのか予測。

    • DISCARD

マルチサンプリングして欲しいときに設定。
Swapした瞬間にFLIPと同じ挙動をするのだけれども、バックバッファの内容は破棄(DISCARD)される。
のでバックバッファの中身は保証されない。

    • FLIP

バックバッファが一枚以上あるときに設定。
Swapした瞬間にカレントのバックバッファがフロントバッファ扱いになる。
のでバックバッファの中身は保証される。
Windowモードのときはバックバッファが一枚増え、そこにコピーされるらしい。

    • COPY

バックバッファは一枚のみ。
Swapした瞬間にバックバッファをフロントバッファにコピーする。
のでバックバッファの中身は保証される。



各々3行ぐらいで簡潔に説明できるじゃねぇかよよよよ!
DirectXのヘルプは相変わらずウンコすぎ。
挙動と、パフォーマンスの話題を分けないで書いてあるので、項目間の内容が統一されてなくて読みにくいよね。