トップページ > 過去ログ > 記事閲覧
ScreenFlip()はFPS60フレーム固定?
名前:k−n 日時: 2007/06/22 16:02

関数ScreenFlip()に着いての質問です。 この関数は自動的にフレームレートを固定してくれてるのでしょうか? (一秒間に60フレームで動いているように感じたので)

Page: 1 |

Re: ScreenFlip()はFPS60フレーム固定? ( No.1 )
名前: 日時:2007/06/23 12:39

 それはディスプレイによります。  例えば75Hzのリフレッシュレートで動作するディスプレイでは75fpsになってしまいます。
Re: ScreenFlip()はFPS60フレーム固定? ( No.2 )
名前:Neutron 日時:2007/06/23 22:05

WaitVSyncFlagに依存します。 (垂直同期信号を待つかどうか) WaitVSyncFlagが真である場合、ScreenFlip時に垂直同期信号を待つため、 1秒間のフレーム数はリフレッシュレートに等しくなります。 偽である場合はScreenFlip時に処理を待たず、即座にフリップが実行されます。 ただし、ディスプレイのリフレッシュのタイミングではティアリングという現象が発生します。 (デフォルトで真なのは、この現象を避けるためだと思われます) このフラグはSetWaitVSyncFlag(int flag)で設定できます。
便乗質問 ( No.3 )
名前:SweetBlack 日時:2007/06/24 12:59

すみません。 横から便乗して質問させてください。 私は、ディスプレイの違いによるリフレッシュレートなんて全然考慮せずに、 ScreenFlip(垂直同期信号を待つ)でゲームの1ループを 締めくくる状態で、ゲームスピードを調整しています。 皆さんの書き込みを見て、試しにリフレッシュレートを変更したところ、 ゲームスピードが変わってしまう事が確認できました。 #今まで60Hzで調整していたゲームが #70Hzに変更する事でスピードが速くなった。 #ただし、処理が重くて70FPSでは収まらない場合は #当然ながら60Hzの時よりも遅くなりました。 この現象を回避する方法 (つまり、リフレッシュレートに関わらずゲームスピードを一定にする) はあるのでしょうか? ぱっと考えるだけだと 垂直同期信号待ちをやめて自分でタイマー測って ウェイトをかけるくらいしか思いつかないのですが これだと画面はちらついてしまうでしょうし……。 例えば、最初にリフレッシュレートを調べて、 70Hzなら10ほど多いわけだから 6フレームごとに1フレームのウェイトをかけるとか……?
Re: ScreenFlip()はFPS60フレーム固定? ( No.4 )
名前:たけし 日時:2007/06/24 21:42

>この現象を回避する方法 >はあるのでしょうか? 公式にはこんな感じでしょうか。 ttp://homepage2.nifty.com/natupaji/DxLib/dxfaq.html#M6 ttp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=past&no=105 でも DxLib 隠れ関数使用例 12.リフレッシュレートを変える ttp://studiokingyo.fc2web.com/dxlib/kaibou/k_shiyou.html 強制60FPSに関しては、できるけど非公式…でしょうか(^ ^;) ゲームとリフレッシュレート問題についてはこのへんにいろいろとありました。 ttp://spitfire.client.jp/program/fps.html
Re: ScreenFlip()はFPS60フレーム固定? ( No.5 )
名前:SweetBlack 日時:2007/06/25 21:39

たけし様。お返事ありがとうございます。 なるほど、そちらに書かれていたのですね。 見逃していました。 考え方としては先に私が書いたものと大差ないように思えますね。 試してみる事にします。 どうもお世話になりました。
Re: ScreenFlip()はFPS60フレーム固定? ( No.6 )
名前:k−n 日時:2007/06/27 15:15

皆さんありがとうございます。 どうやら手前のPCは60固定だったようで、 それで勘違いをしていたようです。 お礼の返事が遅くなり、申し訳ありませんでした。

Page: 1 |