トップページ⇒tech
291コメント118KB

リフレッシュレートに関する論争

■ このスレッドは過去ログ倉庫に格納されています
0001ゲイツ NGNG
あちこちでやってるようなので、まとめない?
0002名無しさん@お腹いっぱい NGNG
あまり関係無いけどプラズマディスプレイってリフレッシュレートってどのくらい?
0003名無しさん@お腹いっぱい。 NGNG
液晶はどうなん?
0004名無番長 NGNG
液晶にレフレッシュレートはない。
0005名無しさん@お腹いっぱい。 NGNG
まとめると、オプションでVSYNC待ちのON/OFFが設定できると
一番いい。ユーザーが自分の環境にベストなものを選ばせれば
文句ないだろう。
0006名無しさん@お腹いっぱい。 NGNG
>>5 ??? OFFにするメリットて何?
0007名無しさん@お腹いっぱい。 NGNG
ショック!フルスクリーン専用にして60Hz固定に
しちまおうとしたら、ChangeDisplaySettingsが効かない環境があるらしいです。
それどころかフリーズまでかましてくれるらしいです。
http://www.bio100.co.jp/cgi-bin2/directx/flashviw.cgi?no=8591&reno=8582
http://www.bio100.co.jp/cgi-bin2/directx/flashviw.cgi?no=8584&reno=8582
http://www.bio100.co.jp/cgi-bin2/directx/flashviw.cgi?no=8592&reno=8582
参照。
んで、画面のプロパティからリフレッシュレートをいじるようにしたいんですけど
640*480だと72Hzまでしか設定がないんですが、アダプタの既定値に
すると60Hzで動いてくれます。
この設定でほかの環境も60Hzになってくれるのでしょうか?

ちなみに調査の結果DirectX診断ツールの設定も
意味のない環境があることがわかりました。

また、MS-DOSプロンプトを立ち上げてAlt+Enterを押してフルスクリーンにすると
640*480の60Hzになりますが、これはどうやっているのでしょうか?
逆アセできる人がうらやましいです。

とりあえず、パンピーでも確実にリフレッシュレートを60Hzにする方法ってのは
どうやるのでしょうか?
0008名無しさん@お腹いっぱい。 NGNG
>7
PC-9821は捨ててもいいとして・・・(怒られる?)
いきなり落ちる環境があるのは痛いですね。

お使いのビデオカード、恐らくWindows環境下では72Hz以下に
設定させないようにしてるだけだと思います。

パンピーでもできる方法、MSに対応してもらうしかないのでは?
それか、リフレッシュレート変更できるかどうかチェックして、
ダメならタイマ使うしかないでしょうね。

つか、環境ごとの違いを吸収してくれるものだったんじゃなかったのか!
と、いつもの怒りを吐いて今日はもう寝ます。
0009名無しさん@お腹いっぱい。 NGNG
これは宗教問題なんだ。

命題:「『1フレーム後に、変数v がa増加する』をどのように実装するか?」

◆A宗:「v += a * dt」
v-syncに同期。リフレッシュレートは任意。

◆B宗1派:「v += a」
タイマーに同期。一定間隔で値を更新する。

◆B宗2派:「v += a」
v-syncに同期。何らかの方法でリフレッシュレートを固定する。

------------
さて、、
なにかと騒いでいるのはB宗の信徒だ。
A宗はQuake系を筆頭に、洋物3Dゲーム。
珍しいことに、FalcomのYsII ETERNALはA宗だね。(ジャップのくせに)
どうやら、A宗の「v += a * dt」は、B宗の信徒には恐るべき異端教義に見えるみたいだ。

と言ったところで、「品質」について考えてみよう(ニヤリ
0010名無しさん@お腹いっぱい。 NGNG
A宗は死んでもやりたくネー。
会社にそこまで尽くすのはアホらし。
120Hzなんて1フレームの処理が間に合わないよ。
俺はB宗2派でいくぜ!エロゲーだけども「がんぶる」という
ゲームのシューティングステージの品質が忘れられん。
0011名無しさん@お腹いっぱい。 NGNG
A宗は3Dなら許す。2Dはなあ・・・。

B宗2派が理想だが、ChangeDisplaySettingsどうやら万能でないらしいので
どうしたものか。
0012名無しさん@お腹いっぱい。 NGNG
Bioの掲示板の、問題のスレッド一覧。
http://www.bio100.co.jp/cgi-bin2/directx/flashviw.cgi?mode=set&no=8576

ドライバの仕業でなく、解像度−垂直同期固定のカードがあるのか?
そういうカードでDOSは動くのか?

DOSのゲームかメガデモを動かしてみればはっきりするんじゃないかな?
VESAのドライバいらないやつね。
0013名無しさん@お腹いっぱい。 NGNG
私は B宗1派 です
ゲーム自体の演算と描画はタイマーを使って目的のフレームレートに
フリップは必要になったタイミングでVSYNCに同期して更新しています
邪道ですか?
0014名無しさん@お腹いっぱい。 NGNG
DOSが動くなら、640x480x60Hzのモードは絶対あるはずだ。
理由はわからないが、ドライバ側が列挙できないようにしてるんだろうね。

DOSの頃はこんなつまらねえ事で悩まなくてもよかったのに・・・。
あ、PC-9821Ap/As/Aeが出た時は困ったな。
垂直じゃなくて水平だけど。
31KHzにされると、いままでのソフトが・・・。
0015名無しさん@お腹いっぱい。 NGNG
Bioの掲示板てわかってない人多いね。
0016名無しさん@お腹いっぱい。 NGNG
Windowsでコンシューマ並みのゲームを!ってのが
そもそもの間違いなのかもしれないね。

X-BOX開発者を育成するための種まきだったのかもしれんな、DirectX。
0017名無しさん@お腹いっぱい。 NGNG
Bio買っちゃうような人だからしかたないよ‥
0018名無しさん@お腹いっぱい。 NGNG
だからChangeDisplaySettingsは使っちゃダメだってば。
もしゲームが途中でクラッシュしたら解像度変更されたままになっちゃぞ。
ユーザーの意思に関係なくコントロールパネル内のセッティングを
いじるようなソフトは最悪!
0019名無しさん@お腹いっぱい。 NGNG
15と17の話がずれてるような気がするのは俺だけか
0020名無しさん@お腹いっぱい。 NGNG
ネタだろ?
0021名無しさん@お腹いっぱい。 NGNG
カタカナ使おうよ ― バイオ
0022名無しさん@お腹いっぱい。 NGNG
>だからChangeDisplaySettingsは使っちゃダメだってば。
>もしゲームが途中でクラッシュしたら
>解像度変更されたままになっちゃぞ。
ならないよ。動的変更にしてるから。
レジストリ登録にしちゃうとなっちゃうけど。
まあ、使えないことは、はっきりしてるみたいだけどね。
0023名無しさん@お腹いっぱい。 NGNG
ChangeDisplaySettings、まともに戻り値が帰ってくれば安全に使えるのに。
変更できてないのに「成功しました」だとぉ!?
呼ぶといきなり落ちるだとぉ!?

鬱だ・・・。
0024名無しさん@お腹いっぱい。 NGNG
>>解像度変更されたままになっちゃぞ。
>ならないよ。動的変更にしてるから。

ちなみに「Alt+Tab」するとどうなるの?
その後、ChangeDisplaySettingsを使う他のソフト起動したらどうなる?
あぁ、謎が謎を呼ぶ...
0025名無しさん@お腹いっぱい。 NGNG
>ちなみに「Alt+Tab」するとどうなるの?
この命令をうけとったら1回元の解像度に戻してやれば良いの。
ChangeDisplaySettingsを使った処理はあらかたやってみたけど
まあ、だいたい普通に処理できるよ。でも、使った瞬間に
フリーズとかあるからやっぱり使えないみたいだから
もう、悩むことも無いんじゃない?
あーあちくしょーせっかく60Hzにあわせられる関数が
みつかったと思ったのに・・・。

>その後、ChangeDisplaySettingsを使う他の
>ソフト起動したらどうなる?
これは考えなくて良いと思うよ。
ってかこんなの気にするんなら内容作りこめよ。
今のところPCはクソゲーしかないんだから
0026名無しさん@お腹いっぱい。 NGNG
>ならないよ。動的変更にしてるから。

ゲームがエラーで終了して、でもOSが無事だった場合は
解像度は変更されたままになっちゃうはず。
っていうか、そうゆう迷惑なフリーソフトが以前あった。
0027名無しさん@お腹いっぱい。 NGNG
>25
呼んだ瞬間にフリーズする環境の方がおかしいんじゃないかと
思うんですが・・・。
呼んだ瞬間に落ちるとかいう環境、ディスプレイのプロパティから解像度変更
できるんでしょうかね。


>今のところPCはクソゲーしかないんだから

クソゲーしかないとは思わないけど、フリー/シェアウェアのゲームは
弾幕系シューティングばかりのような気がしますね。

とりあえず面接には持ってくんなー。もう飽きたよ。
ソースもどっかで拾ってきたようなのつついただけで、
突っ込んだ質問したら答えられなかったり・・・。
愚痴ってスマン。
0028名無しさん@お腹いっぱい。NGNG
>呼んだ瞬間にフリーズする環境の方がおかしいんじゃないかと
>思うんですが・・・。
俺にいわないでくれコイツ↓に聞いて。
http://www.bio100.co.jp/cgi-bin2/directx/flashviw.cgi?no=8584&reno=8582
うむ。良い環境だ。
まあ、フリーズするのはもしかしたら狂言かもしれんが・・・。
ほかにもそういう人がいてくれるといいのだけど。
0029名無しさん@お腹いっぱい。NGNG
nVIDIAか・・・。
OS何なのかわからんね。

Bio掲示板にいる方々はみなあきらめモードみたいね。
リフレッシュレートに依存するのは悪!みたいな言われようは
納得いかんけど。
0030名無しさん@お腹いっぱい。NGNG
>>27
FF、DQのクローンならOKですか?
0031名無しさん@お腹いっぱい。NGNG
リフレッシュレートを固定する仕様が世界中で一般化されると困るのは
3Dカードメーカーかな。ハードの進歩に足枷がかかるからね。
マイクロソフトは意図的に固定できなくしてるんだよ。
0032名無しさん@お腹いっぱい。NGNG
>31
ハードは詳しくないんですが、やっぱ幅広くリフレッシュレート変更
できるようにするとコスト高くなるんですかね?
進歩に足枷がかかる理由を他に思い浮かばないんですが、
よろしければご教授願えますでしょうか。

Windows専用機にするにしても、電源投入時は
昔ながらのテキスト画面なわけですし、どうも違うような気が
するんですが。
ここ一連の状況を見るに、ドライバの手抜きっぽい感じだし。
0033名無しさん@お腹いっぱい。NGNG
仮にVSyncが自由に変更できたところで、液晶ディスプレイとかだった場合はどーすんのよ。
結局VSyncに頼らないプログラミングが必要になってくると思うが。
0034名無しさん@お腹いっぱい。NGNG
液晶でもVBLANK待ちのフリップが効いてるって事は、
ハード側で何らかの方法で、VBLANK(的なもの)検出可能な仕組みが
提供されてるのでは?
0035名無しさん@お腹いっぱい。NGNG
今の液晶パネルのドライブだとビデオチップはCRTと
かわらんもんなぁ。部分書替えとかをAPIレベルで
サポートして、リフレッシュレートという概念自体
なくならないと外から見て差はないでしょ。
ちなみにうち液晶素子屋だけど、設計自体は1/60でやってます。
でもソフト屋からみればそんなのCRTの蛍光体の残光は
画質には響きませんっていっているのと同じくらい意味の
ないことだけどね。
0036名無しさん@お腹いっぱい。NGNG
>33
液晶だからってのは関係無いんです。
いや、ほんとに。
0037元3DFX信者NGNG
海外のゲーム開発系サイトでもFAQの話題だねー。
自分の製品をリフレッシュレートに依存して作っちゃった開発者が
マスター近くで気づいて青くなっていたりする。
それでもプログラマは各々の自分のやりかたしか信じないんだよな。

このスレを見ると、日本のパソゲーを遊ぶ人には、
VSYNCを切ってどこまでFPSが上がるのか競うとか、
「自分にとって快適なリフレッシュレートを自由に設定して遊ぶ」
という世界とは無縁の時代がまだまだ続くことが分かるよ。
オレは基本は85Hzだが。
0038名無しさん@お腹いっぱい。NGNG
>オレは基本は85Hzだが。

120Hz見ちゃうと、85には戻れなくなる。
0039名無しさん@お腹いっぱい。NGNG
>37
前半部分何いってるのかさっぱりわかりません。
つまり何がいいたいのでしょうか?

>「自分にとって快適なリフレッシュレートを自由に設定して遊ぶ」
これやると恐ろしいほどバグが増えそうなのがわからないですかね。
FPSを競うゲームでも作る気ならよそでやってください。

0040sageNGNG
>39
その程度でバグが増えるといっている時点で
力量の無さを露呈しているようにしか見られないのだが…
0041名無しさん@お腹いっぱい。NGNG
>39
現段階ではリフレッシュレートに依存しないプログラムを作るしか
選択肢がないというのだから、ユーザーがどのリフレッシュレートに
設定したって問題ないはず。
バグが増える増えないとかいう話ではなく、そうゆうプログラムに
するしかないんだってば。

ちなみにリフレッシュレートとFPSは別物だよ。
多分わかってないだろうけど...
0042名無しさん@お腹いっぱい。NGNG
>その程度でバグが増えるといっている時点で
>力量の無さを露呈しているようにしか見られないのだが…
お前ゲーム作ったことあるのか?
どうせ、紙芝居系のエロゲしか作ったこと無いんだろ?
この発言はそうとしか見れないな。

>41
あのねぇ、120Hzなんて間に合ってるゲームなんてないよ
ただ、コマ落ちと処理落ちをごっちゃにして、
ガタガタ動く情けないゲーム作ったぐらいでいい気にならないでね。
0043名無しさん@お腹いっぱい。NGNG
「FPSとリフレッシュレートを同期させる」オプションを付けるだけなら
ユーザーは文句はいわんだろし、プログラマのこだわりも満足させられ
るだろ?
ビデオカードからの割り込みなんてBIOS依存でoffにも出きるものだし、
もともとvsyncを返さないビデオカードやドライバもあるのだし、
それに完全に依存するプログラムを作ろうって奴の気がしれないが...
0044名無しさん@お腹いっぱい。NGNG
>43
VSYNC(というかVBLANK)返さないビデオカードやドライバはさすがにないと思うが・・・。
でないとフリップした時、確実に悲惨な事になる。


現状では、FPS=リフレッシュレートを実現するには、オプションを用意するとか、
環境を調べてるとかして、使える環境でのみ使うしかないんだな。

ChangeDisplaySettingsの件については、「使えない環境の方が異常」だと思う。
一応Win32 APIだし、恐らくドライバの不具合だろう。
ビデオカードのメーカーに報告しとけよ!って感じなんですがどうですかね。

それと、リフレッシュレート=FPSを前提としたプログラミングを
悪いもののように言うのはやめてほしいね。
そりゃDirectX固有の事情なんだし。

DirectXでしかゲーム作った事のない新人に家庭用機やらせたら、
リフレッシュレートに依存しないように作ったりしてな・・・。
0045名無しさん@お腹いっぱい。NGNG
Win32APIはあまり信用できないし・・・って、だめじゃん・・・
でも多分DirectX関係者もあまり重視していないんではないでしょうか
グラフィックカードのメーカーも機能の追加と速度の向上に必死で
不具合の無いドライバがリリースされることがほとんどないという
状況ですし もうWindowsには妥協の道しか残されていのかもしれないですね
しょせん後付けのDirectXですし
関係なさそうだけど Windowsのスレッドの精度は問題ないんでしょうか?

でも俺リフレッシュレートが120とか75があるなんて最近まで知らなかったよ・・・
ゲーム機とPC98とMSXでしかゲーム作ったことないし・・・
004643>44NGNG
>VSYNC(というかVBLANK)返さないビデオカードやドライバはさすがにないと思うが・・・。
>でないとフリップした時、確実に悲惨な事になる。

そうか? プログラム組んだが、いつまで立っても先へ進まないので
調査したらVBLANK待ちで止まってた、なんて珍しくないと思うが?
そりゃあそういうBIOS設定にしているのが悪かったり、メーカーや
ドライバが悪かったりするんだけどさ、「それは自分が悪いんじゃ
ありません」と言ったところでユーザーの文句はプログラムを作っ
た側にまず来ちゃうしね。
「あんたの内部事情なんて知ったことじゃない。他のゲームは動い
ているのに、なんであんたのとこのゲームは動かないんだ!不良品
だ!」ってね。

これがPC固有の問題だということには同意。
しかし、リフレッシュレートに依存したいということは、
640x480x8bpp固定のゲームを作りたいということなんだろうか(藁
それ以外のモードでは、元々サポートしなければならないリフレッ
シュレートの規定は無いから、依存できる値なんでないしな。
0047名無しさん@お腹いっぱい。NGNG
A宗でいいんじゃないかなぁ。
ユーザだって気にしてないんでしょ、そのへん。
実際コンシューマの3Dゲーム(マリオ64とかGTとか)だって、
固定フレームレート(っていい方でいいのかな?)じゃないけど、
その事について文句言ってる「一般ユーザ」って見たこと無いし。

なんとなく、CDとかMDみたいなもんかな、と。
ある周波数以上はカットしたり、色々情報削って非可逆圧縮したりと、
理論上、音質悪くなってるはずなんだけど。
でも一般ユーザは気が付くことなく平気で使ってる。
一部の耳のいい方々は確かに気がつくけど、
大多数の人達にとってはどうでもいい問題なわけで。

メクラ相手に素晴らしい絵を見せようとしても無駄、とでもいうか。
そんなところに労力注ぐより、もっと別のところに力を注いで、
全体的にはもっと楽しましょうよ。

そりゃ、確かに良く出来るならやりたいとこだけど。
実際に実現するのは問題があるわけだから、
さっさとあきらめちゃったほうがいいかな、と。

でもまあ、そういう問題があることは声高に主張しつづけないと、
なんでしょうけど。
0048名無しさん@お腹いっぱい。NGNG
YsEはリフレッシュレートによって明らかにゲーム速度が変わっていた
0049名無しさん@お腹いっぱい。NGNG
>42
頭悪そう…
結局、dt 計算と補間処理出来ないだけでしょ?
005044NGNG
>45
うーん、Win32APIが信用できないとなると、何もできなくなりますが・・・。
DirectX使えば、資源を全部占有していい事にしてくれるといいのに。
中途半端に使えるようになってて、調停はあんたらやってくれってとこが
MSらしいというか何というか・・・。

>46
最近のBIOS事情には疎いのですが、VBLANKまわりの設定って
通常オンになってません? 割り込みはともかくVBLANK取得はできると
思うんですけど。
珍しくないかどうかもまた、人それぞれになるんじゃないでしょうか。
サポートの手間はまた別問題だと思います。

解像度と周波数の規定はありますが、低い周波数を列挙できない環境があるみたいですね。
ビデオカードメーカーは低い周波数をWindowsから設定できなくしつつあるのかもしれません。
色数は関係なく640*480以下であれば、60Hzからはずしてる事はなさそうですけど。
でないとDOSやPC-UNIXが使えませんし。
電源投入時、いきなり75Hzとか80Hzにしてくるビデオカードが出てきたら
話は別ですが。


>47
「所詮はWindowsのゲームだから」って言われたくないんです。
今のところはオプションとして用意するしか道がないですけど。


>49
そういう物言いはもうやめようや。
0051肯定派NGNG
>>41、>>42に対して>>49のようなもの言いは、なんつーか、
江戸の華というか(藁
0052名無しさん@お腹いっぱい。NGNG
この板一番の煽りスレになるのは最初から分かっていたこと…
0053名無しさん@お腹いっぱい。NGNG
このスレに限らないけど、とにかく罵倒だけとか、
まず罵倒してから講釈たれる方がいらっしゃいますが、
色々たまってるんですかねえ・・・。

牛乳飲んどけ!
0054名無しさん@お腹いっぱいNGNG
>>53
カルシウム取るならヒジキもいいよ!
0055ヒジキはNGNG
ストレスで抜け毛が激しい人にもお奨め、かな。
0056名無しさん@お腹いっぱい。NGNG
>51
社交辞令ってやつだっけ?
005751>56NGNG
をう、それかも。
0058名無しさん@お腹いっぱい。NGNG
ケンカは止めましょう。
でも49がアホな事に変わりはありません。
0059名無しさん@お腹いっぱい。NGNG
2chで「ケンカは止めましょう」も、けっこうアブナい線いってそう。
あ、おれはれっきとしたアホだからいいの、ウンウン。
0060名無しさん@お腹いっぱい。NGNG
結局、結論としては

Windowsでゲーム作るなら、リフレッシュレートについては妥協するしかない。
どうしてもFPS=リフレッシュレートにしたければ動作している環境を調べ、
オプション等で対応する。

ってとこですか?


目的の周波数が列挙できたとして、ChangeDisplaySettingsが
正しく動作しない環境については、どう思います?
(今のところBio掲示板の2例ぐらいしか知らんのですが)

俺は(WIN32 APIが)動作しない環境が異常だと思うし、
それを理由に使うべきではないというのはおかしいと思う。
0061名無しさん@お腹いっぱい。NGNG
ゲーマーにあんたの環境じゃWIN32 APIがまともに動作しないから動かせないよといって納得すると思う?
0062名無しさん@お腹いっぱい。NGNG
>61
サポートの問題と、使う使わないの問題は別だと思うんですが。
環境の違いによる動作の違いやユーザーの反応まで、細かい事まで
全部言い出したらWindowsじゃ何も作れないですよ。

ChangeDisplaySettingsを使わない状態をデフォルトとし、
使う状態はオプションで提供すればいいし、あなたみたいに
ユーザーの反応が気になる人は使わなければいいだけの事でしょう。

念のために設定ダイアログに「動かないかもしれないよ」って書いとくかな。


やはり「Change・・・はウチでダメだったからお前ら使わない方がいいぞ」ってのは
おかしいと思うんですよ。そりゃ個人が作ったアプリやライブラリの不具合なら
それでもいいと思うんですが、動かないのはWIN32 APIですよ?
ビデオカードメーカーがきちんと対応すべき問題であって、
不具合を発見したならメーカーに報告しとくべきじゃないかと思うんですがね。
発見したのが開発者なら尚更そうすべきかと。
0063名無しさん@お腹いっぱい。NGNG
>60
>正しく動作しない環境については、どう思います?
タイマー信者の狂言かもしれない。

>61
いいや、そういうユーザーへの対応は
「お手持ちのコンピュータのマニュアルか製造元にお問い合わせ下さい」
だ。これで大抵のアホなユーザーは自分のパソコンが悪いと思うであろう。
結局、少数側のサポートなんていつまでたってもなくならない。
ぶぅどぅーとかNECマシンやふじつーやら、特殊なもん使ってるやつは
結構いる。今更、サポートがどうたら言うことも無いだろ。
だいたい、いつまで某ビデオボードの変な制限を考慮したゲームを
作らなければいけないのか・・・。
そこまで気にするというのならDirectXの出番は無いだろ?
もしくはDIB系の関数を使うとか。
0064名無しさん@お腹いっぱい。NGNG
>62
>それでもいいと思うんですが、動かないのはWIN32 APIですよ?
そうだ、いざとなったらMSを訴えようぜ!
奴等のおかげで不毛な争いをして精神的ショックを受けたとか・・・
0065名無しさん@お腹いっぱい。NGNG
ところでX-Boxは、その辺(リフレッシュレートとか)どうよ?
0066名無しさん@お腹いっぱい。NGNG
とりあえずウチでは下のような記述で
きちんとリフレッシュレート変更出来ました。

DEVMODE devMode;
LONG lResult;

ZeroMemory( &devMode, sizeof(devMode) );
devMode.dmSize = sizeof(devMode);
devMode.dmBitsPerPel = 16;
devMode.dmPelsWidth = 640;
devMode.dmPelsHeight = 480;
devMode.dmDisplayFrequency = 60;
devMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY;
lResult = ChangeDisplaySettings(&devMode, CDS_FULLSCREEN);

効果無い人いたら、環境教えて頂けます?
0067>66NGNG
そのやりかただと固まっちゃうディスプレイカードがあるので
過去に痛い目にあったことがあります。
ChangeDisplaySettings呼ぶのなら
手を抜かずに
DEVMODEはEnumDisplaySettingsで得られた値の中から
あなたが望むものに一番近いものを選ぶほうが吉かと‥
006866NGNG
EnumDisplaySetting で、何故かリフレッシュレートの値が
帰ってこないんですよ… 0Hz って(^^;
0069名無しさん@お腹いっぱい。NGNG
だから一番近いものっていってんじゃん
0070名無しさん@お腹いっぱい。NGNG
この問題での一番の疑問は
世にあふれている紙芝居エロゲって画質優先だよな?
なのにそれを捨ててまで、ゲームスピードを合わせる必要ってあるのか?
ってところ。
イベントの発動タイミングをタイマでとってスクロールやなんかは
多少スピードは違っても、リフレッシュレートにあわせて
ちゃんとフリップでやったほうが綺麗じゃねーかと思うんだが・・・。
何故、タイマでスクロールやる?

ところで>66の人のプログラムは私の環境では動いてしまいます。
し、同じくEnumなんちゃらでとったリフレの値は0Hzです。
ただし、Win2000にしたときは何故かちゃんと
値がかえってきました。
とりあえず報告。
0071名無しさん@お腹いっぱい。NGNG
>>70
紙芝居エロゲの画質って、リフレッシュレートがどうかって関係無いよ。
0072名無しさん@お腹いっぱい。NGNG
>71
みんな、オリジナリティ皆無の2D弾幕STGを作ってるんでしょ。
リフレッシュレートに同期しないと弾が見づらいしさ。
007372NGNG
一般に、STGは技術的には初心者向け。
同人やフリーソフトには三角関数すら知らないで作ってるのが珍しくない。
同人は、まー好きに作れやと思うのだが、
市販ソフトには世界レベルに追いついて欲しいものだと願うよ。
0074名無しさん@お腹いっぱい。NGNG
>71
がたがたしてて汚くないか?
スクロールの滑らかさってのが皆無になるでしょ?
0075名無しさん@お腹いっぱい。NGNG
EnumはNT系だとリフレッシュ取れるのねん、
なんでゲームOSは9Xで取れないのかは謎だ、、、
Meは持ってないから知らんけど駄目だんだろうな
0076名無しさん@お腹いっぱい。NGNG
>>70
「紙芝居エロゲ」にユーザーが求めるのって、
塗りがうまいとか、女の子が可愛いとか、そういうもの。
エフェクトがきれいでも、あまり評価されない。
0077名無しさん@お腹いっぱい。NGNG
とりあえずティアリングが問題になるのはスクロールするゲームでしょ。
AVG及び固定画面式のゲームなら、VSYNCに同期しなくたって全然OK。
ぐだぐだ言わずに試してみなさい。
0078名無しさん@お腹いっぱい。NGNG
フェードインとかしても同期なしだと汚いよ
0079名無しさん@お腹いっぱい。NGNG
>とりあえずティアリングが問題になるのはスクロールするゲームでしょ。
だからさ、よく女の子がスクロールしてんじゃん。
フェードイン・アウトをやってもバシバシ線が入ってるのも
あるでしょ(内部処理だけタイマのときはこれはおこらんが
スクロールは汚い)。
俺がいいたいのはこの際ゲームスピードより
リフレッシュレートに同期を優先させた方がいいんじゃないか
ということなんだがそこらへんはどう?
ってゆうか、AVGでそこまで複雑にならないのなら、
是非A宗でいって欲しいが・・・。
ゲームの始めにリフレッシュレートを測って変数に
自分が考えるリフレッシュレート÷今のPCのリフレッシュレート
例60/120とか
を掛けておいて後はフレームごとに足すだけで問題無いかな?
ぐだぐだいわずに試してみなさい。
0080名無しさん@お腹いっぱい。NGNG
>>79
>俺がいいたいのはこの際ゲームスピードより
>リフレッシュレートに同期を優先させた方がいいんじゃないか

エロゲ板で「遅いマシンのときはエフェクトをはしょれ、いちいち
重たいエフェクトを見せられるとウザイ」って感じの文句を見たことあるよ。
0081名無しさん@お腹いっぱい。NGNG
>80
意味不明。
全然関係無い問題を出されても困る。
ゲームスピードとは全く別の問題なのだよこれは。
コマ落ちと処理落ちをごっちゃにしているように見える。
こういうことをするから、簡単にクソな部分がうまれる。
0082名無しさん@お腹いっぱい。NGNG
どうやらローカルな用語の意味が交錯しているようです。
コマ落ちと処理落ちの定義を明文化してください。
>81
0083名無しさん@お腹いっぱい。NGNG
60がせっかく収束させようとしてたのに
話が元に戻りつつあるように思うのだが・・・。

同じようなコードが延々と書かれてるようでちょっと嫌。

0084名無しさん@お腹いっぱい。NGNG
>82
うぃす。(これで間違えたら赤っ恥だな)

まず処理落ち。
 処理落ちは例えば60Hzで動かしていて、ゲームの処理が
重たくなって毎回の垂直同期に間に合わなくなったとき。
このとき同期に一つ間に合わないとFPSが60FPS
から30FPSになるこれが処理落ち。
弊害としてはゲーム画面の質の低下、キーレスポンスの悪さ等。

 コマ落ちは例えば120Hz前提で作った物を60Hzで
動かすとき、すると120Hzのときは
1,2,3,4,5,6・・・とならんでいたインデックスを
60Hzの場合1,3,5・・・と処理しなきゃならなくなる。
こうすると2,4が単純に消えるこれがコマ落ち。
弊害としてはゲーム画面の質の低下。

一休み。
0085名無しさん@お腹いっぱい。NGNG
んで、ちょっとここでスクロールのお話。
3ずつのものと3.3のものを考える。3の場合は
0,3,6,9,12,15・・・と増える。3.3の場合は
0,3.3,6.6,9.9,13.2と増える。ここで
画面にはどう出るかと言うと、3の場合は
0,3,6,9,12・・・で3.3の場合は
0,3,6,9,13・・・となる。
ここで問題は13のところこれが非常に汚く見える。
ということを頭にいれてレッツゴー。

んでコマ落ちの話でさっきは120から60の話をしたが
60から75だとどうなるか?60で
1,2,3,4,5,6・・・のものは75では
0,1,2,3,4,4,5・・・ってなるのかな?
っつーわけでこれがコマ落ちの汚さの説明。
0086名無しさん@お腹いっぱい。NGNG
もちろんタイマーなんかで管理してしまうと60と30の
間をいったりきたりして非常に汚い。
はっきりいってタイマーで何やらやっている人は
いっそのことリフレッシュレートなんか無視して
しまった方が良い。
んで何やら問題がなさそうなA宗だけど、リフレッシュレートに
間に合わなければその苦労も水の泡。ので、俺のゲームは
絶対に処理落ちなどしない。どんなPCでも動かしてみせる!
って人向け。だから処理の軽いAVGなどはこれにしよう。

リフレッシュレートを無視するとティアリング発生。

んで、何故いろんな人がごっちゃにするのかと言うと、
処理落ちがおきたときのゲームスピードの誤魔化しを
コマ落ちでするから。
大抵PSなんかのコンシューマで組んでる人は、
何処までを拾うか?ってのを決めるみたいだけど、
例えば30FPSまではコマ落ちで対処して、
それ以降は処理落ち必須。とか。

こんな説明でよろしいでしょうか?
っていうかコンシューマで組んでる人はこの辺間違うわけが
ないので俺よりそっちの人に聞いた方が信憑性あり。
0087名無しさん@お腹いっぱい。NGNG
実際に Direct X でA、B、C案それぞれのコード出して
検討してみると面白そうだけど…
見てるだけモナーなんで逝ってくる
0088場違いかもしれませんがNGNG
今、ドキュメントをスムーズスクロールするテキストビュアーを作ってるんですが、
スクロール中にちらついて、MSIEの同機能の様な、奇麗なスクロールになりません。
症状からして、ここでお話されているVSINCで同期を取れば良いかと思うんですが、
ゲームじゃ無いので、なるべくDirectXを使用したくないんです。
なんとかWin32SDKレベルで解決する方法は無いでしょうか?

いまの所、スクロールのタイミングは次の3種類でやっています。

(いままで試した方法)

1)WM_TIMERを使用
→全然精度が出ない。(がくがく)

2)タイミング通知スレッドを使用
(ワーカスレッドでInterval中はSleepし、SendMessageで
メインスレッドへタイミングを通知する。)
→精度は良い(なめらか)が、ちらつく。

3)マルチメデイアタイマを使用
→精度は良い(なめらか)が、Thread同様にちらつく。
(また、マルチメデイアタイマはDLLを呼出すので、環境によってDLLの
サーチに時間が掛かり、その分起動が遅くなるので頻繁に起動/終了
するアプリには不利に感じました。)

いまの所、2)がお手軽で良い感じです。(あんまり関係ありませんが)
0089名無しさん@お腹いっぱい。NGNG
>スクロール中にちらついて、MSIEの同機能の様な、奇麗なスクロールになりません。

あれは隠しAPIを使っているのです。
0090名無しさん@お腹いっぱい。NGNG
>>88
描画は一旦メモリDCに描いてから、最後に画面にBitBltするようにして、
WM_PAINT使って描画してるなら、WM_ERASEBKGNDに何もせずにTRUE返す。
GDIだけで処理してるなら、これでちらつかなくなると思うよ。
0091>88NGNG
その程度では、ちらつきとリフレッシュレート同期は関係ないぞ。
まさかとは思うが、BitBLT使わないで毎回再描画してるせいでは
ないか?
0092名無しさん@お腹いっぱい。NGNG
>88
ちらつくって?
何が原因なのか判断する為の情報が少なすぎ。
しかも垂直同期取る気でいるし・・・ウィンドウモードでは
垂直同期なんて取ったって意味無いよ。
というわけでここでは場違い。
0093名無しさん@お腹いっぱい。NGNG
IEのスムーズスクロールは別にVブランク見てないですよ。

IEだけでなく、マウスカーソルの移動なりウィンドウサイズの変更なり
高速な環境なら見てくれるといいのになあとは思うけど、
VSYNC割り込みの機構が必要なので無理でしょうね、やっぱ。
0094名無しさん@お腹いっぱい。NGNG
監視さえできれば割り込みは無くてもなんとかなる。
0095名無しさん@お腹いっぱい。NGNG
>んで何やら問題がなさそうなA宗だけど

えっと、問題はあります。精度の低いマルチメディアタイマで
フレーム間Δtを求めるのは当てになりませんし
(高リフレッシュレート環境だと平気で0msとか返ってきたりする)
パフォーマンスカウンタを使っても、WindowsはマルチタスクOSですから
単にFlipでループするだけでもディスプレイと同期したΔtが求まりません。
結局、B宗2派クオリティへの到達は微妙です。

#ま、リフレッシュレートは上げられますが。

あと、フレーム単位の演出が使えませんね(B宗1派もだけど)。
整数ドットスクロールとか数フレームごとのフラッシュとか
数フレーム周期の振動とか、意外と使用頻度高いですし。
0096>94NGNG
無駄な負荷増えまくりそうでヤダ……。
0097名無しさん@お腹いっぱい。NGNG
>>95
今思いついたんだが、
リフレッシュ・レートが分かれば、
描画落ちしていなければdt固定にできるんじゃないだろうか。
0098名無しさん@お腹いっぱい。NGNG
>描画落ちしていなければdt固定にできるんじゃないだろうか。
だから>79で俺がそういってるんだが・・・
しかし、問題はそこではないって84,85,86でいっているんだが
どうよ?
0099名無しさん@お腹いっぱい。NGNG
>>98
おおぅ、申し訳ない。ここ数日来てなかったもんで(ぉぃ
010088NGNG
冷静に考えてみたら、他に原因がある気がしてきました。
GDIの使い方をもう一度考えてみます。
(一応90さんのおっしゃられたメモリDCでBitBltはしてます。WM_ERASEBKGNDにTRUEも)
スレッド汚して申し訳ありませんでした。
0101名無しさん@お腹いっぱい。NGNG
念の為言っとくけど、VSYNC同期ウンヌンはフルスクーリンのアプリのみに
適応される事柄だからね。ウインドウモードではVSYNC同期できないんで。
ウインドウをドラッグして左右に動かすと、ティアリングを再現できるよ。
■ このスレッドは過去ログ倉庫に格納されています