トップページ > 過去ログ > 記事閲覧
リフレッシュレートを変更しても...
名前:YUHA 日時: 2007/11/16 01:03

リフレッシュレートについて質問です。 リフレッシュレートを調整する関数を組み込まずに、 プログラムを動作させると、リフレッシュレートの設定によって 例えばキャラクターなどの動作の 速度が変わってしまうという事ですが、 試しに変更してみているのですが、 60Hz〜200Hzの間で変更してみても 全く動作の速度に変化がありません・・・。 この場合、何が原因でしょうか? よろしくお願いします。。

Page: 1 |

Re: リフレッシュレートを変更しても... ( No.1 )
名前:EMIYA 日時:2007/11/16 17:56

んー、wikiなどでリフレッシュレートと検索してもらえば詳しい説明載ってるんですが、 リフレッシュレートっていうのは、モニタに1秒間に何回画像を描画するかーみたいなものですよ。 なんで、リフレッシュレートを変えても、モニタ側の1秒間の描画速度が変わるだけで、プログラムのスピードに影響はでないですよ。
Re: リフレッシュレートを変更しても... ( No.2 )
名前:YUHA 日時:2007/11/16 20:29

返信どうもありがとうございます。 wikiの方調べてみました。 すいません・・リフレッシュレートについてよく理解できて いなくて、質問が上手く出来てなかったと 思います。 ここで聞きたかったのは <DXライブラリミニテクニック>コーナーの 「ゲームの進行速度とリフレッシュレート」 に解説してあるような、 "フレームレート"?(でいいんですかね?) の環境による違いを合わせる為に調整する方法、 なんですが、 この違いを確認する為に、調整を行わないで リフレッシュレートを変更しながらプログラムを 動作させてみていた時の状況でした。 理解が少なくて説明が上手く出来ていないかも しれませんが、この場合でもEMIYAさんが 言われているように影響はないんでしょうか? 長くなりましたが、返信もらえれば ありがたいです。
Re: リフレッシュレートを変更しても... ( No.3 )
名前:SweetBlack 日時:2007/11/17 01:00

垂直同期信号待ちをしてないんじゃないですか? してないとリフレッシュレート変更しても関係ないはずですよ? 一応、不勉強な私ですが、解る程度で説明させていただきます。 (ミニテクニック集と重複してる部分もあるかもしれませんが、ご了承を) テレビなどの「画面」は、一見ずっと光っているように見えますが、実は点滅しています。 早すぎて人間の目ではわからないだけです。 これが通常、60分の1秒に一回点滅してるわけです。 (厳密には60分の1秒に画面の半分が書き替えられている) 試しに、画面の前に手をかざして、手を振ってみてください。 お使いのモニタがブラウン管仕様の場合、残像がストップモーションのように見えるはずです。 (液晶モニタの場合は蛍光灯と同じように、点滅してないため、そうは見えない。  けど、画面が更新されている速度はブラウン管と同じ) 「点滅している」と言いましたが、実は画面全体が同時に点いたり消えたりしてるわけではありません。 ブラウン管の後部から画面に向けて照射された電子ビームが画面に当たった時に光り、 そのビームが画面左上→右上、次に一段さがって、左から右へ…… と繰り返され、最終的に画面右下へ到達するというように、 実際には「点」が画面上を凄い速度で走ってるわけです。 これが1回画面全体を走るのに60分の1秒かかるわけです。 さて、ゲームの処理で画面の表示が次々と変わっていくわけですが、 モニターがまだ「画面の上半分を表示してる最中」には 左にいたキャラクターが、 「画面の下半分を表示してる最中」に右に移動してたら 人間の目にはどう映るでしょうか? そう、キャラクターの上半分が画面左にいるのに、 キャラクターの下半分が画面右にいる……ように見えたりします。 これをティアリング(画面のちらつき)と呼びます。 これが発生すると、はっきりいって見づらいです。 ではこのティアリングを起こさないためにはどうすればいいか? 「モニターが画面を描き始めてから、画面を描き終るまでの間」には 「キャラを動かしたりしない」ようにすればいいわけです。 この処理が「垂直同期信号待ち」と言うものだと思ってください。 キャラを動かす処理 → キャラを表示する処理 → モニターが画面を描き終るまで待つ → (最初に戻る) こういう流れになるわけです。 ちょっと話がずれますが、上記の 「キャラを動かす処理 → キャラを表示する処理」の処理時間が重すぎて60分の1秒を越えてしまったりすると 俗に言う「処理落ち」となってスピードが遅くなります。 2フレーム(60分の2秒)に一回の移動処理しかできないのですから当然ですね。 ここから本題です。 今までの説明は、リフレッシュレートが60Hzを前提にしてきましたが、 これを70Hzに変更したらどうなるでしょう? 今までは60分の1秒に1回の移動処理だったのが、 今度は70分の1秒に1回の移動をするようになります。 つまり速くなります。 もし、前述した例のように、 「キャラを動かす処理 → キャラを表示する処理」の処理時間が60分の1秒よりは早いけど、70分の1秒よりは遅かった場合、 処理落ちして70分の2秒に一回の移動処理しかできなくなり、 逆に遅くなります。 このために色々と工夫しなくてはいけなくなるわけです。 「垂直同期信号待ち」をしなければ、この心配はありませんが…… 当然ティアリング(ちらつき)は起こりますし、 なによりCPUの処理速度によって、速度がまちまちになってしまうはずです。
Re: リフレッシュレートを変更しても... ( No.4 )
名前:YUHA 日時:2007/11/17 17:14

SweetBlackさん丁寧な説明有難うございます。 質問の件ですが、原因が分かりました。 自分なりに調べてプログラムを変えて 試したりしてみましたがなかなか上手くいかず、 他の方向で調べてみたところ、 自分のPCはリフレッシュレートが60Hzが最高で、 設定が固定となっていました・・・;; せっかく説明してもらったのに、 お二人にはほんと申し訳なかったですm(..;)m これじゃいくらやっても変わらないはずでした... お手数おかけしましたが、 説明をもらったことで、とても勉強になりました。 ありがとうございました(^_^)

Page: 1 |