WindowモードとFullScreenの遅延について検証


1.垂直同期無しのWindowモードとFullScreenモード


下記が設定。
Mode BufferCount SyncInterval Flag MaxFrameLatency
フルスクリーン 1 0 NONE 3
ウィンドウ 1 0 NONE 3

結論:垂直同期なしだとフルスクリーンのほうが3フレーム分(60Hzで約0.75フレーム)早く描画される。
   追記:7フレームと書いていたが撤回。タイミング次第で3~7フレーム程度変動しているようだ。

2.垂直同期有りのWindowモードとFullScreenモード


下記が設定。
Mode BufferCount SyncInterval Flag MaxFrameLatency
フルスクリーン 1 1 NONE 3
ウィンドウ 1 1 NONE 3

結論:垂直同期有りだとフルスクリーンのほうが画像約10フレーム分(60Hzで約2.5フレーム)遅く描画される。
なんか不思議な結果。何かを待ってしまっているのだろうか。検証が必要かも。
検証画面へ

3.垂直同期有りのWindowモードとFullScreen(最大遅延1)モード


下記が設定。
Mode BufferCount SyncInterval Flag MaxFrameLatency
フルスクリーン 1 1 NONE 1
ウィンドウ 1 1 NONE 3

結論:垂直同期有りだとフルスクリーンのほうが画像約4フレーム分(60Hzで約1フレーム)早く描画される。
ウィンドウモードだと最大遅延設定の影響を受けなかったがフルスクリーンは強い影響を受けている。
ウィンドウモードだとDWMの設定に依存するのか?
検証画面へ


1.の検証画面
測定フレーム紹介:左がフルスクリーン、右がウィンドウモード
二つとも同じexeで引数でパラメータを設定。
どちらも同じタイミングで描画しているのにずれている。
1フレーム目
2フレーム目(ここで左が次のフレームに到達)
9フレーム目(ここで右が左の2フレーム目に到達)


2.の検証画面
測定フレーム紹介:左がフルスクリーン、右がウィンドウモード
二つとも同じexeで引数でパラメータを設定。
どちらも同じタイミングで描画しているのにずれている。
1フレーム目
2フレーム目(ここで右が次のフレームに到達)
10フレーム目(ここで左が右の2フレーム目に到達)



3.の検証画面
測定フレーム紹介:左がフルスクリーン、右がウィンドウモード
二つとも同じexeで引数でパラメータを設定。
どちらも同じタイミングで描画しているのにずれている。
1フレーム目
2フレーム目(ここで左が次のフレームに到達)
5フレーム目(ここで右が左の2フレーム目に到達)



最終更新:2013年11月25日 15:08