Re: 画面の垂直同期信号について ( No.1 ) |
- 名前:管理人 日時:2009/10/24 14:18
3.00以降は仕様の変更で SetWaitVSyncFlag は DxLib_Init を呼び出す前でしか使えません
DirectX7 では DirectX でいうところの ScreenFlip を呼び出すときに垂直同期信号を待つかどうかを指定できたのですが、
DirectX9 では初期化時に垂直同期信号を待つかどうかを指定して、以降動的に変更する手段が用意されていないので
初期化時に垂直同期信号を待つかどうかを SetWaitVSyncFlag で指定するようにするしかありませんでした
私もいつでも使えるようにしたいのですが・・・すいません m(_ _;m
|
Re: 画面の垂直同期信号について ( No.2 ) |
- 名前:PAD 日時:2009/10/24 15:36
そうなんですか…
DirectXの仕様がわからないので質問しますが、初期化した後でも垂直同期信号を待つように「変更する」のではなく、
ただ単に垂直同期信号を待つだけの関数なんていうのもないのでしょうか?
|
Re: 画面の垂直同期信号について ( No.3 ) |
- 名前:管理人 日時:2009/10/26 00:03
ただ単に垂直同期信号を待つだけの関数、というのは、DirectX に、ということでしょうか?
もしそうでしたら在ります
その機能を使用して
1.Direct3D9 の初期化設定では「垂直同期信号を待たない」にする
2.ScreenFlip 時に垂直同期信号を待つAPIを使用して垂直同期信号を待ってからフリップするようにする
という方法で動的に垂直同期信号を待つかどうかをプログラム側で選択できるようにしようとしたのですが、
オンボードチップなどの一部のグラフィックスに弱い環境で垂直同期を待っているにもかかわらず
垂直同期線期間中にフレームバッファの転送( or アドレス切り替え )が間に合わず次のフレームの走査が
始まってしまい、ティアリングが画面上部に常に発生するという状態になってしまい、駄目でした・・・
ライブラリの側でそれらの環境を切り捨てる選択はできませんが、WaitVSync関数を使用して手動で
垂直同期信号を待つようにすれば一応動的に垂直同期信号を待つかどうかを選択することはできます
1. SetWaitVSyncFlag( FALSE ) ; を DxLib_Init の実行前に呼び出し、垂直同期信号を待たないようにする
2. 垂直同期信号を待ちたいときは ScreenFlip の前に WaitVSync( 0 ) ; を呼び、待ちたくないときは呼ばない
|
Re: 画面の垂直同期信号について ( No.4 ) |
- 名前:PAD 日時:2009/10/27 12:34
とりあえずDirectXの関数を使ってやってみようと思います。
ありがとうございました。
|