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

このエントリーをはてなブックマークに追加
1ゲイツ
あちこちでやってるようなので、まとめない?
2名無しさん@お腹いっぱい :2000/10/22(日) 07:05
あまり関係無いけどプラズマディスプレイってリフレッシュレートってどのくらい?
3名無しさん@お腹いっぱい。 :2000/10/22(日) 17:23
液晶はどうなん?
4名無番長 :2000/10/22(日) 20:45
液晶にレフレッシュレートはない。
5名無しさん@お腹いっぱい。 :2000/10/22(日) 20:58
まとめると、オプションでVSYNC待ちのON/OFFが設定できると
一番いい。ユーザーが自分の環境にベストなものを選ばせれば
文句ないだろう。
6名無しさん@お腹いっぱい。 :2000/10/22(日) 21:39
>>5 ??? OFFにするメリットて何?
7名無しさん@お腹いっぱい。 :2000/10/22(日) 21:51
ショック!フルスクリーン専用にして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にする方法ってのは
どうやるのでしょうか?
8名無しさん@お腹いっぱい。 :2000/10/23(月) 01:32
>7
PC-9821は捨ててもいいとして・・・(怒られる?)
いきなり落ちる環境があるのは痛いですね。

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

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

つか、環境ごとの違いを吸収してくれるものだったんじゃなかったのか!
と、いつもの怒りを吐いて今日はもう寝ます。
9名無しさん@お腹いっぱい。 :2000/10/23(月) 02:12
これは宗教問題なんだ。

命題:「『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宗の信徒には恐るべき異端教義に見えるみたいだ。

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

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

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

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

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

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

鬱だ・・・。
24名無しさん@お腹いっぱい。 :2000/10/24(火) 09:50
>>解像度変更されたままになっちゃぞ。
>ならないよ。動的変更にしてるから。

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

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

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


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

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

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

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

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

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

120Hz見ちゃうと、85には戻れなくなる。
39名無しさん@お腹いっぱい。:2000/10/25(水) 11:45
>37
前半部分何いってるのかさっぱりわかりません。
つまり何がいいたいのでしょうか?

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

牛乳飲んどけ!
54名無しさん@お腹いっぱい:2000/10/26(木) 01:30
>>53
カルシウム取るならヒジキもいいよ!
55ヒジキは:2000/10/26(木) 01:34
ストレスで抜け毛が激しい人にもお奨め、かな。
56名無しさん@お腹いっぱい。:2000/10/26(木) 02:24
>51
社交辞令ってやつだっけ?
5751>56:2000/10/26(木) 06:21
をう、それかも。
58名無しさん@お腹いっぱい。:2000/10/26(木) 08:32
ケンカは止めましょう。
でも49がアホな事に変わりはありません。
59名無しさん@お腹いっぱい。:2000/10/26(木) 08:37
2chで「ケンカは止めましょう」も、けっこうアブナい線いってそう。
あ、おれはれっきとしたアホだからいいの、ウンウン。
60名無しさん@お腹いっぱい。:2000/10/26(木) 17:35
結局、結論としては

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

ってとこですか?


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

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

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

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


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

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

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);

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

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

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

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

84名無しさん@お腹いっぱい。:2000/10/27(金) 23:33
>82
うぃす。(これで間違えたら赤っ恥だな)

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

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

一休み。
85名無しさん@お腹いっぱい。:2000/10/27(金) 23:35
んで、ちょっとここでスクロールのお話。
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・・・ってなるのかな?
っつーわけでこれがコマ落ちの汚さの説明。
86名無しさん@お腹いっぱい。:2000/10/27(金) 23:37
もちろんタイマーなんかで管理してしまうと60と30の
間をいったりきたりして非常に汚い。
はっきりいってタイマーで何やらやっている人は
いっそのことリフレッシュレートなんか無視して
しまった方が良い。
んで何やら問題がなさそうなA宗だけど、リフレッシュレートに
間に合わなければその苦労も水の泡。ので、俺のゲームは
絶対に処理落ちなどしない。どんなPCでも動かしてみせる!
って人向け。だから処理の軽いAVGなどはこれにしよう。

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

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

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

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

(いままで試した方法)

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

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

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

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

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

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

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

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

あと、フレーム単位の演出が使えませんね(B宗1派もだけど)。
整数ドットスクロールとか数フレームごとのフラッシュとか
数フレーム周期の振動とか、意外と使用頻度高いですし。
96>94:2000/10/29(日) 01:24
無駄な負荷増えまくりそうでヤダ……。
97名無しさん@お腹いっぱい。:2000/10/29(日) 01:42
>>95
今思いついたんだが、
リフレッシュ・レートが分かれば、
描画落ちしていなければdt固定にできるんじゃないだろうか。
98名無しさん@お腹いっぱい。:2000/10/29(日) 01:48
>描画落ちしていなければdt固定にできるんじゃないだろうか。
だから>79で俺がそういってるんだが・・・
しかし、問題はそこではないって84,85,86でいっているんだが
どうよ?
99名無しさん@お腹いっぱい。:2000/10/29(日) 01:56
>>98
おおぅ、申し訳ない。ここ数日来てなかったもんで(ぉぃ
10088:2000/10/29(日) 02:01
冷静に考えてみたら、他に原因がある気がしてきました。
GDIの使い方をもう一度考えてみます。
(一応90さんのおっしゃられたメモリDCでBitBltはしてます。WM_ERASEBKGNDにTRUEも)
スレッド汚して申し訳ありませんでした。
101名無しさん@お腹いっぱい。:2000/10/29(日) 17:40
念の為言っとくけど、VSYNC同期ウンヌンはフルスクーリンのアプリのみに
適応される事柄だからね。ウインドウモードではVSYNC同期できないんで。
ウインドウをドラッグして左右に動かすと、ティアリングを再現できるよ。
102名無しさん@お腹いっぱい。:2000/10/29(日) 19:56
>101
全くもって同意。
なんか勘違いしてる人多いよね。
103235>:2000/10/29(日) 20:30
> ウインドウをドラッグして左右に動かすと、ティアリングを再現
よくわかりません。特になにも起こりませんが‥
104>101:2000/10/29(日) 21:04
はあ。そうですか。ウィンドウモードでも WaitForVerticalBlank の有り無しで
ティアリングの現れ方に明確な差が出ますが。

>ウインドウをドラッグして左右に動かすと、ティアリングを再現できるよ。

これは当然。なぜならウィンドウのドラッグ時の描写はDirectDrawではなく
Windows (GDI) がやっているから。
105名無しさん@お腹いっぱい。:2000/10/29(日) 21:45
>104
一瞬で終わるフリップに対して、WaitForVerticalBlank で
待った後に BLT では垂直帰線終了までに
描画が終わるとは限らないのですよ。

試しに640*480の画像を10ドット飛ばしくらいで
右にスクロールさせてしばらく眺めていると、
ズレた時の様子がよくわかりますよ。
106名無しさん@お腹いっぱい。:2000/10/29(日) 22:26
>104
不毛な争いはやめ。
ウィンドウモードで垂直同期に合わせてしまうと
ティアリングの線が毎フレーム同じようなところにできて
しまって、逆に合わせないときよりもきたなくなってしまう。
ので、ウィンドウモードのときは垂直同期は取らない方がいい。
という結論を出した感じのする会社はリーフとかアリスソフトが
そんな感じで作ってある。
107名無しさん@お腹いっぱい。:2000/10/30(月) 05:34
A宗を使ってみようかと思ってふと思ったのですが、下手したら当たり判定のすり抜けが起きますよね。
当たり判定をバウンディングボックスから線形補間にしなくてはなりませんが、
途中でキャラが消滅した場合など前途多難ですね。鬱だ・・・
108名無しさん@お腹いっぱい。:2000/10/30(月) 14:26
>103
>>ウインドウをドラッグして左右に動かすと、ティアリングを再現
>よくわかりません。特になにも起こりませんが‥

あなたは「ティアリングが気にならない人」に分類されます。
日本の成人男性の7割が「気にならない人」らしいので、安心してください。
109>104:2000/10/30(月) 15:05
ウィンドウモードでのFlip()の中身は単なるBitBlt()だということが
わかっているのだろうか...
最近はビデオカードによっては違うのか?
オーバーレイサーフェイス使ってるとか。
110名無しさん@お腹いっぱい。:2000/11/01(水) 00:55
もうウィンドウモードの話は良いですから、本来の話題に切り替えてください。
111名無しさん@お腹いっぱい。:2000/11/01(水) 02:18
早く結論が聞きたいのであげ。
112名無しさん@お腹いっぱい。:2000/11/01(水) 03:03
全部読んだか君たち。
113名無しさん@お腹いっぱい。:2000/11/01(水) 05:37
Yonda
114名無しさん@お腹いっぱい。:2000/11/01(水) 06:52
もう話すことないって。
115名無しさん@お腹いっぱい。:2000/11/01(水) 12:26
この手のスレって、大抵最初の1/3程度で結論出てるだろ(藁
現状追認なら結論はとうについているし、それ以外では
「現状に満足すべきでなく積極的に働きかけるべき」という書き
込みがあったが、言い出しっぺの法則ということで頑張ってくれよ。
to 書いた奴
116名無しさん@お腹いっぱい。:2000/11/01(水) 15:30
まとめとくか。

今のところWindows(+DirectX)環境では、家庭用ゲーム機のように
リフレッシュレートと完全に同期したゲーム画面は作れません。
その理由としては、
1:DirectXのSetDisplayModeでは、リフレッシュレート変更不可。
2:ChangeDisplaySettingsを実行できない「異常な環境」が存在する。
3:このような事情でも構わないと考えている開発者が存在する。

対策としては、
・ユーザーの実行環境を調べ、可能であればリフレッシュレートを変更する。
 ただし上記2に引っかかる可能性もあるので、オプションとして提供
 した方が無難。
・目的のリフレッシュレートにできなかった場合は、現在のリフレッシュレートを
 もとに移動量を計算したり、うまくコマ落ちさせたり、タイマを使うなどで
 対処する必要がある。
・リフレッシュレート変更できるようにしろ!と、MSやビデオカードメーカーに
 働きかける。


補足や訂正があればよろしく。
誤解やミスがあるかもしれんが、罵倒だけのレスは勘弁な。ストレス発散はよそでやってくれ。
117愚痴:2000/11/01(水) 21:10
>2:ChangeDisplaySettingsを実行できない「異常な環境」が存在する。
これは設定する構造体のdmSizeメンバに値を入れていなかったから
かもしれない。話をややこしくしてすまん。Gumaより。
118名無しさん@お腹いっぱい。:2000/11/02(木) 06:39
>116
対策に追加:
・ティアリング覚悟でVSYNCを無視して画面更新する。
(FlipじゃなくてBltを使う。)ウインドウモード時とコードが
共用できて便利。また自分の好きなfpsで作れる。
119名無しさん@お腹いっぱい。:2000/11/02(木) 14:31
>118
「対策」っていうにはちょっと違うような・・・。
つまらん突っ込み申し訳ない。
120名無しさん@お腹いっぱい。:2000/11/02(木) 17:01
>118
その話は86でもう俺がしてるんだが、なんでここの人は
同じような内容を何度も書きこむかね?
こんなの全部呼んだって5分もかからないだろう。
プログラムの分厚いマニュアル本に比べたら屁みたいなもんなのに
どうして読まないで書きこむのかね?そんなに長文が嫌いなのか。
121名無しさん@お腹いっぱい。:2000/11/02(木) 17:04
まとめに追加だからいいんじゃない。
122名無しさん@お腹いっぱい。:2000/11/02(木) 17:08
>A宗を使ってみようかと思ってふと思ったのですが、下手したら当たり判定のすり抜けが起きますよね。

内部処理は100fpsあたりで固定で、描画のときは
各フレームのオブジェクト座標と姿勢を求めるのに補間使うってのはどない?
123107:2000/11/02(木) 18:09
>122
なるほど〜 レンダリングはスレッドにして常に全力で回して、
ゲームループで暇な時にSleep混ぜてやればいい感じですね
#スレッドの中でDrawPrimitiveしていいのか知りませんけど...
そのうちやってみます
124名無しさん@お腹いっぱい。:2000/11/02(木) 18:24

ふと思ったんですが、リフレッシュレート同期/非同期に関わらず
「自分の好きなFPSで作るメリット」って何かあります?
125名無しさん@お腹いっぱい。:2000/11/02(木) 18:29
>>123
スレッドの中で使用できないんだったらどうやって使うんだろう・・・
126名無しさん@お腹いっぱい。:2000/11/02(木) 19:36
>>124
・誤差ゼロ
・フレーム単位の演出が可能
127126:2000/11/02(木) 19:37
s/誤差/実行環境による誤差/
128126:2000/11/02(木) 19:45
またまた補足。フレーム単位の演出ってのは、
1フレームあたり整数ドットスクロールとか、
2フレームのフラッシュとか、
3フレームあたり1コマのアニメーションとか、
4フレーム周期の振動とか、
5フレームでウィンドウの改ページとか、そゆの指します。
ゲーセンや家庭用ゲーム機では結構お目にかかれるハズ。

実際、映画・CGアニメーション・VJ・モーションタイポグラフィなど
映像の世界でも、意外にフレーム単位の操作は多用されてるんですわ。
fps可変だとそういうテクニックが一切封じられてしまうので
映像技術者的見地からするとかなりキツイです。
129名無しさん@お腹いっぱい。:2000/11/02(木) 20:12
>122
>123
本気で読まないんだね。84,85,86を通して線形補間の意味のなさは
説明されてるでしょう。まず、こんなことを言ってるぐらいだから
処理落ちとコマ落ちの違いがまだわかってないんだね。
いいですか?A宗なんてやったって絶対に綺麗なスクロールなんか
できないんです。A宗の唯一の利点はユーザーが自分の考えるリフレッシュレート
でやってくれたときのみ綺麗にみえるという程度なんです。
まず、A宗のフレームごとのdtの計算方法はわかっているのですか?
処理落ちとコマ落ちの対処の違いはわかっていますか?
dtの計算は
「自分の考えるリフレッシュレート÷現在のリフレッシュレート」
です。この定数の何処に線形補間が入るのか聞きたいぐらいです。
もし、1フレームにかかった時間を毎回求めているなら、
それは処理落ちとコマ落ちを全く理解していないことになります。
理解していないのなら84,85,86を読んでみてください。
130124:2000/11/02(木) 22:38
>126-128
どうもありがとうございます。
リフレッシュレートと非同期だと、あまり意味ないっぽいですね。
(目立たない、程度で我慢するなら別でしょうけど・・・)

131名無しさん@お腹いっぱい。:2000/11/02(木) 23:36
おれのような意見については皆さんどう思いますか?
「リフレッシュレート固定するのはいいが、
60Hzはやめてほしいんだよな。眼がチカチカしてさ。」
132名無しさん@お腹いっぱい。:2000/11/03(金) 00:35
>131
しょうがねーんだよ。85Hzとかにあわせても
処理落ちしちまったら、60Hzのときより眼がチカチカする
ようになるんだから。それにほかのいろんなリフレッシュレート
に合わせるように作っても自分が想定したリフレッシュレート
以外になるとどうせ駄目。A宗のやり方が駄目なのは説明
あったでしょ。
133名無しさん@お腹いっぱい。:2000/11/03(金) 01:34
>131
家庭用ゲーム機とかゲーセンでも目がチカチカしますか?
134名無しさん@お腹いっぱい。:2000/11/03(金) 01:36
>>30
インターレースだからじゃない?
135名無しさん@お腹いっぱい。:2000/11/03(金) 01:37
>>134 のリンクは >>133 の間違い。
寝ぼけてます・・・スマソ
136>129:2000/11/03(金) 01:45
えー、趣味でDirectXいじくってるB宗のアーケードプログラマですが、
なんつーか、何を言いたいのかよく分からないんですけど(汗)。

>A宗の唯一の利点はユーザーが自分の考えるリフレッシュレート
>でやってくれたときのみ綺麗にみえるという程度なんです。

>dtの計算は
>「自分の考えるリフレッシュレート÷現在のリフレッシュレート」

A宗ってったら基本はSDKのサンプルのDonutsみたいなの指してますよね?
「自分の考えるリフレッシュレート」なんて存在しないでしょ。

一番基本的なとこから確認なんですが、滑らかに時間を進めるため
DonutsみたくtimeGetTimeで毎フレームΔtを求めたりせずに
リフレッシュ・レートがRHzだとしたら(1÷R)sに固定してみる、と。
スクロール速度vxをNpixel/sとすると、
フレームあたまの移動量vx×Δtは(N÷R)pixelで固定ですよね。
これはRがどんな数字であれ「滑らかなスクロール」じゃないんですか?

んで、122はゲームの処理はマルチメディアタイマとかでB宗、
描画はガリガリとFlipのループで、B宗でステップ実行した結果から
補間しながら行うことだと理解したんですが。
(これも実装するとなるといろいろ面倒だろうなー)
137136:2000/11/03(金) 01:47
s/timeGetTime/GetTickCount/
うー、精度の低いほう使ってたか。ヤなサンプルだなー。
138名無しさん@お腹いっぱい。:2000/11/03(金) 02:55
>136
>フレームあたまの移動量vx×Δtは(N÷R)pixelで固定ですよね。
>これはRがどんな数字であれ「滑らかなスクロール」じゃないんですか?
残念ながらそうはならないんです。
それが滑らかに見えるときはvx×Δtが整数のときのみなんです。
まあ、もっと汚いのはキャラクタのアニメーションだと思いますが。
3Dなんかでは常にこんな感じなので気にするだけ無意味なんですが、
2Dだとさすがに気になります。
139名無しさん@お腹いっぱい。:2000/11/03(金) 09:47
138です。さっきサンプルのプログラムを作って実験してみたところ
ガタガタになりませんでした。すいません。
勘違いしたのは、私の2Dゲームが120Hzでは処理落ちしてた
からでした。ので、vx×Δtで大丈夫みたいです。
ってその辺の説明は86あたりに書いてありましたね。
140名無しさん@お腹いっぱい。:2000/11/03(金) 15:58
結局、タイマは使わず、開始時点で移動量計算してやるのが
ベストって事ですね。

リフレッシュレートを返してこないクソドライバは
どうしてくれよう・・・。

141名無しさん@お腹いっぱい。:2000/11/03(金) 16:51

DirectX BBSに、また盛り上がりそうなネタが・・・
http://www.bio100.co.jp/cgi-bin2/directx/flashviw.cgi?no=8795&reno=no
142名無しさん@お腹いっぱい。:2000/11/03(金) 21:42
>141
いや、この人SetDisplayModeの方使ってるじゃん。
誰か、ここ教えてやれって。
143名無しさん@お腹いっぱい。:2000/11/03(金) 21:58
>140
>リフレッシュレートを返してこないクソドライバは
>どうしてくれよう・・・。
だから自分で何秒間かかけてリフレッシュレートに
合わせてFPSを測ればいいんではないかと・・・マシンごとに。


144名無しさん@お腹いっぱい。:2000/11/03(金) 23:34
リフレッシュレートに関しては、DirectXBBSよりここの方が
有意義だな・・・。
145名無しさん@お腹いっぱい。:2000/11/04(土) 00:23
あっちは「妥協」が合言葉になってますね。

ゼロ返してくるとなると、計算するしかないですね・・・。
無負荷でループまわして、タイマで計測するのがベストでしょうか。

リフレッシュレートの値返すのってそんなに手間なのかなあ・・・。
ドライバ担当者が手を抜いてるとしか思えん。
146名無しさん@お腹いっぱい。:2000/11/04(土) 02:01
的外れかもしれないが、リフレッシュレートをユーザーが入力する(いちおう自動判定も付けて)ようにしてそれにあわせて動かす方法はダメなの?
147名無しさん@お腹いっぱい。:2000/11/04(土) 02:53
GetDeviceCapsでリフレ拾うのはNTでしかだめなんだねえ。

148名無しさん@お腹いっぱい。:2000/11/04(土) 03:43
>145
>あっちは「妥協」が合言葉になってますね
まったくです、一部の人の暗黙の了解的なことになってしまってて
進歩が無いですね。ほかの技術に関してもそうですね。
もう行く意味はないかな?

>146
リフレッシュレートをユーザーが入力するってどうやるつもりなの?
149名無しさん@お腹いっぱい。:2000/11/04(土) 04:43
>>146
X−Windowの設定のようなものを想像した(藁
150名無しさん@お腹いっぱい。:2000/11/04(土) 04:48
>148

>まったくです、一部の人の暗黙の了解的なことになってしまってて進歩が無いですね。

普通の掲示板でこの話題を扱ったらディベート合戦が始まるのは目に見えてるのですが・・・
151146:2000/11/04(土) 04:53
リフレッシュレート→垂直同期
152名無しさん@お腹いっぱい。:2000/11/04(土) 06:06
>150
だったら、納得がいくまで話し合えばいいのにあそこの掲示板は
どうやら絶対的な常連がいるらしくて面白くない。他の技術に関しても
そうで常連さんにわからないことは聞いても意味が無いみたいです。
>151
ところで何が言いたいのでしょうか?
垂直同期信号の出るタイミングがプログラムで変えられないので
困っているのですが・・・ユーザーに設定させるその方法とはいかに?
153名無しさん@お腹いっぱい。:2000/11/04(土) 06:47
>>152
多分>>146=151が言っているのは
>>136の意見に対してリフレッシュレートの取得ができませんという意見が
あったため、取得するのではなくユーザーに現在のリフレッシュレートを
入力させたらどうかという事ではないでしょうか
リフレッシュレートを最適な値へユーザーに変更してもらうという解釈も
できると思いますが・・・ちょっと言い過ぎってかんじ
154名無しさん@お腹いっぱい。:2000/11/04(土) 13:09
>ユーザーに現在のリフレッシュレートを
>入力させたらどうかという事ではないでしょうか
なるほど、しかし、プログラムで測れるんだからユーザーの手を
煩わせるまでもないというのが結論かな。
155名無しさん@お腹いっぱい。:2000/11/04(土) 13:16
>150
>普通の掲示板でこの話題を扱ったらディベート合戦が始まるのは目に見えてるのですが・・・

そしたらこのスレッドの存在を教えてやればいい。
このスレッド全部読んで、自分が採るべき方法がわからない奴は
DirectXでゲーム作るのやめた方がいいと思う。

それにしても結構有意義なスレッドになったな。
156>154:2000/11/04(土) 15:26
>プログラムで測れる

ソースコードキボーン
157名無しさん@お腹いっぱい。:2000/11/04(土) 15:54
>156
おいおい頼むよ。143の人が言ってることをそのままプログラムに
直すだけだって。要するに、フリップを使ってループさせながら
FPSを測ると自然とFPSと現在のリフレッシュレートがいっしょの値に
なってくるはずじゃん。もちろんループの中身は空で何秒間か測って
誤差を散らすようにする。これでわからんのではどう説明すべきか・・・。
158名無しさん@お腹いっぱい。:2000/11/04(土) 16:57
>>157
>これでわからんのではどう説明すべきか
だからソースコード希望なのでは?
派閥毎のコアになるソースがあると、説明不要で便利だと思うけど。
多分156は、具体的にどう実装すべきか、一例が知りたいんじゃないかな。
159名無しさん@お腹いっぱい。:2000/11/04(土) 17:14
long  fps = 0;
{
  long  begintime = timeGetTime();
  while((begintime-timeGetTime())>(10*1000)){
    g_pDD->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN,NULL);
    fps++;
  }
  fps /= 10;
}
こんな感じになるんでしょうか?
160名無しさん@お腹いっぱい。:2000/11/04(土) 17:21
>159
まてまて、ループの条件式は本当にそれで満足か?
161159:2000/11/04(土) 17:27
・・・逆・・・鬱だ氏のう・・・
long  fps = 0;
{
  long  begintime = timeGetTime();
  while((begintime-timeGetTime())<(10*1000)){
    g_pDD->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN,NULL);
    fps++;
  }
  fps /= 10;
}
timeGetTimeの値によってはとんでもないことになるけど
大体このような感じなんでしょうか? もしかして俺わかってない?
162159:2000/11/04(土) 17:29
また間違えた・・・氏んでも償いきれない・・・
今度からちゃんと試してから書こう・・・
163名無しさん@お腹いっぱい。:2000/11/04(土) 17:58
>>162
>今度からちゃんと試してから書こう・・・
この板ほんと、こういう人多い…。
164名無しさん@お腹いっぱい。:2000/11/04(土) 18:16
>162
まてこら、それじゃ、わかんねー奴不安になるだろが。
というわけで、俺もサンプル。
この掲示板ってインデントどうなってんかわからんけど、まあ、いいや。
double Begin,End;  //始めの時間と終わりの時間
double Count;    //フレームごとのカウント数
double Second;    //計測する時間(1/1000秒)
double Refresh;   //リフレッシュレート

Begin = timeGetTime();  //始めの時間を取得
Second = 10000;      //10秒間測る

//無限ループ
while(1){
WaitVSync(1);     //垂直同期待ち

Count++;        //カウントを増やす

End = timeGetTime();  //終わりの時間を取得

//10秒以上経過したら抜ける
if(End - Begin >= Second)break;
}

//リフレッシュレートを出す
Refresh = Count / ((End-Begin)/1000.0);
165名無しさん@お腹いっぱい。:2000/11/04(土) 19:45
>>163-164 うへ、すみませんでした
申し訳ないので俺の分もきちんと訂正
long  refreshrate = 0;
{
  long  begintime = timeGetTime();
  while((timeGetTime()-begintime)<(10*1000)){// 10秒間のループ
    g_pDD->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN,NULL);// VSYNC検出
    refreshrate++;// 検出回数カウント
  }
  refreshrate /= 10;// 10秒間の検出回数を1秒間の値にするため1/10にする
}
166名無しさん@お腹いっぱい。:2000/11/04(土) 21:01
164です。
あっ、俺も間違えた。
Count = 0;
で初期化してないから駄目じゃん。
やっぱり、こんなチイセーマスに書いてちゃ駄目だねぇ。
鬱だ・・・氏のう・・・
167名無しさん@お腹いっぱい。:2000/11/04(土) 21:22
先ほど>>164>>165のコードを試してみたんですが
私の環境ではディスプレイのプロパティのリフレッシュレートが
何であろうと必ず74を返してきます
ちなみに私の環境は
OS : Windows2000
グラフィックカード : ViperII (S3 Savage2000)
テストに使用した画面のモード : 640 x 480 8bit
ディスプレイのプロパティは60Hzでしたが計測結果は74でした、どうして?
168名無しさん@お腹いっぱい。:2000/11/04(土) 22:24
>ディスプレイのプロパティは60Hzでしたが計測結果は74でした、どうして?
それは74Hzか75Hzだから。
そうじゃなかったら不良品決定。捨てちまえよ。

もしかしたら、DirectX診断ツールの方だね。
普通ここ↓にある奴。「上書き値」って所を死ぬ気で探す。
C:\mssdk\bin\DXUtils\dxdiag.exe
これ効く奴は効くんだけど効かないのは効かないみたい。
ディスプレイのプロパティとどっちが優先なのかは不明。

あとは開発者ならコントロールパネルの方のリフレッシュレートの
設定も見ておくと良いかも。ランタイムバージョンには無いんだね。

それと確かめてもらいたいのは、今現在のリフレッシュレートって
ディスプレイのボタン(ハードのね)をいじるとみれるでしょう。
話はそれから。ってかそんなのも知らんのか?
一言、言わんと気がすまん。

ところで「ディスプレイのプロパティ」って何を指してるの?
169名無しさん@お腹いっぱい。:2000/11/04(土) 22:35
168じゃないけど。
どうしても揃わないなら、計測値の方を信用せざるを得ないね。

俺のディスプレイは古いので、リフレッシュレートとか出す機能が
ありまっせん。

170167:2000/11/04(土) 23:03
>>168 変なところに腹を立てるなよ
>それは74Hzか75Hzだから。
そんなこたわかってるって、結果の値は74だから74と書いておくのが筋だろ

開発者ならわかって欲しかったんだけどここでもしWinAPIがリフレッシュレート
を返しますとなった場合やレジストリの設定を読めばリフレッシュレート取得
できるという場合に、はたしてそれは実際のリフレッシュレートと一致するのか
ということを気にかけてほしかったよ
俺の環境が異常なのかもしれないけどね、正常なドライバをリリースしてくれないのは
S3に限ったことではないし、もしかしたら他の環境でも起こりえるのではないでしょうか
171名無しさん@お腹いっぱい。:2000/11/04(土) 23:15
>>169
ディスプレイがなんであろうと、
リフレッシュレートを出す機能とは関係がないと思うが・・・
172169:2000/11/04(土) 23:34
>171

168の言ってるのは「ディスプレイについてるボタンを押すと、
 現在のリフレッシュレートが表示される機能」の事じゃないの?

そう思って169みたいな事を書いたんだけど、違う?

173名無しさん@お腹いっぱい。:2000/11/04(土) 23:38
174名無しさん@お腹いっぱい。:2000/11/05(日) 03:33
168ですが、170と171がいっていることは意味不明です。
全然会話の内容に繋がりがないのに気づきませんか?
とりあえず、まともな人間なのは169の人だけですね。
168で俺の教えた方法での報告しねーで「気づいて欲しかった」
とか意味不明だし。173はあながちはずれでもないがMS-Dosモード
進めてどうする。

とりあえず、170は172に書いてある内容だけでもどうなん?
175169:2000/11/05(日) 03:40
そろそろ寝ようと思ったんすけど、なんか荒れそうなので・・・。
171については、171さんの誤解を招くような書き込みをした
私が悪いのかもしれません。
話の流れから理解してもらえるとは思ったんですが。

173については、VSYNCがどういうものかわかってない人には
いいんじゃないでしょうか?
176名無しさん@お腹いっぱい。:2000/11/05(日) 06:54
Gumaはいるか?お前に惚れた馬鹿がいる。じゃないが、
あんまり荒らすなよ。
結局お前、自分の正しさを強引に他人に認めてもらおうってだけだろ。
無駄な論争せんで、ゲームの中身で勝負しろ。
177名無しさん@お腹いっぱい。:2000/11/05(日) 11:01
>176
>あんまり荒らすなよ。
こんな無駄な発言をしながら「荒らすな」だってさ。

>無駄な論争せんで、ゲームの中身で勝負しろ。
お前、その前にプログラマなら理論で勝負しろよ。
もうエロゲでもなければ一人でゲームなんて作る時代じゃ
ないんだから。分業制なんだから勝負も何もないだろ?
それにこのスレなかなか有意義になっただろ?
178名無しさん@お腹いっぱい。:2000/11/05(日) 13:58
>177
176が荒らしに決まってるだろ。
ムキになるとはお前Guma本人?
179名無しさん@お腹いっぱい。:2000/11/05(日) 15:22
>ムキになるとはお前Guma本人?
うん。そう。(84あたりで顔真っ赤にして解説してる奴とかそう)
口が悪い人ならいくらでも許せるがタダの馬鹿はゆるせん。
それこそ論争や話し合いでムキになる人は好きだけど、馬鹿は嫌。
180名無しさん@お腹いっぱい。:2000/11/05(日) 16:07
あーあ。もういいって。やめなよ
181名無しさん@お腹いっぱい。:2000/11/05(日) 19:19
>180
了解
182名無しさん@お腹いっぱい。:2000/11/05(日) 21:00
176=178=180
ナイスフィッシング!
183名無しさん@お腹いっぱい。:2000/11/05(日) 21:26
>182
いや、名無しさん@お腹いっぱいが
青の人と緑の人がいる。
184名無しさん@お腹いっぱい。:2000/11/06(月) 00:34
>183
いまいち
185名無しさん@お腹いっぱい。:2000/11/06(月) 17:39
あげ
186名無しさん@お腹いっぱい。:2000/11/07(火) 01:49
こんなページを見つけたんだが、誰の?

http://www.interq.or.jp/gold/ken-k/K_K/gokuhi/g2.htm

187名無しさん@お腹いっぱい。:2000/11/07(火) 04:08
今更ですが、

> んで、122はゲームの処理はマルチメディアタイマとかでB宗、
>描画はガリガリとFlipのループで、B宗でステップ実行した結果から
>補間しながら行うことだと理解したんですが。
>(これも実装するとなるといろいろ面倒だろうなー)

いちお検証してみたけど、面倒っていうか死ぬ気が……。
原理上、ある程度の描画遅延が発生するのは避けられないし。
スレッド分けしないで、こんなんでどうです?

double gameTime = timeGetTime();
double drawTime = gameTime;

double gameDTime = 1.0 / 60; // ゲームの処理は毎秒60回
double drawDTime = 1.0 / refreshRate;

for (;;) {
  while (gameTime < drawTime) {
    gameTime += gameDTime;
    step(); // ステップ進行
  }
  drawTime += drawDTime;
  draw(drawTime); // 時刻drawTimeの状態を補間して描画
  Flip();
}
188187:2000/11/07(火) 04:10
訂正:timeGetTime()→0.0
考えてみたら、全然意味がなかった。
189名無しさん@お腹いっぱい。:2000/11/07(火) 05:43
>186
関係無いけど俺はELが嫌いだ。
190名無しさん@お腹いっぱい。:2000/11/07(火) 06:58
>>136

いまさらですが。

>DonutsみたくtimeGetTimeで毎フレームΔtを求めたりせずに
でも、毎回これやらないと処理が重くなったときに
ゲーム内の時間の進みが遅くなりませんか?
191名無しさん@お腹いっぱい。:2000/11/07(火) 08:34
>190
136じゃないけど。
だから、その処理が重くなったときを処理落ちっていって、
それの対処はコマ落ちをさせることでするの。
1回処理落ちをすると次の描画は次の同期信号待ちになるから、
つまるところ、内部処理を1回だけ進めてやればいい。
2回落ちたら2回進めてやればいい。
だから必要なのは毎回のΔtじゃなくて1フレームにかけるΔtの
値だけってことでしょ?
ここ全部読んだ?全然話読まないんだね?いい加減うんざりするよ。
同じような質問ばっかりで。
192名無しさん@お腹いっぱい。:2000/11/07(火) 18:32
実践してないのに質問するから見当違いな質問になる。
とりあえず作ってみれば分かるよ。
193デフォルトの名無しさん:2001/01/21(日) 17:27
ひさしぶりにage
194デフォルトの名無しさん:2001/01/21(日) 19:28
もう語る事ないってばぁ。
195デフォルトの名無しさん:2001/01/21(日) 23:25
いまさらだけどさ。

>いいですか?A宗なんてやったって絶対に綺麗なスクロールなんか
>できないんです。

絶対とか言ってるし。アンチエリアス処理すれば?
補色みたいな色が交互にあるような絵じゃなけりゃ綺麗になるよ

>実際、映画・CGアニメーション・VJ・モーションタイポグラフィなど
>映像の世界でも、意外にフレーム単位の操作は多用されてるんですわ。

普通映画は24コマでNTSCとかは30コマ。
アニメ映画も24コマだけどアニメーションは12とか8とか。
ビデオとかにする際30コマにする時点でエリアス発生確定。
5コマに一回アニメーション止めたり
6コマ目に5コマ目の映像を混ぜたり色々方法あるけど、
この時点でフレーム単位の厳密さなんて無意味。
映画をビデオで見てフレーム単位のエフェクトが台無しだとか思うか普通?
196デフォルトの名無しさん:2001/01/22(月) 05:40
単純に映像一般では時間ではなくフレームを基準にしているんだってことでしょ。
12や24や30が60になったところで、その辺は変わんないです。

それとNTSCはインターレースで毎秒29.97フレーム、
59.94フィールドで事実上60コマね。
197196:2001/01/22(月) 05:51
ふと心づいたが、

>6コマ目に5コマ目の映像を混ぜたり色々方法あるけど、

混ぜるってのは面白そうなアプローチかも知れませんな。
B宗1派60fpsの映像を適当にブレンドしながらリフレッシュレート分に伸長。
実験してみるか……。
198デフォルトの名無しさん:2001/01/22(月) 08:12
まあでもあまり一つのやり方に固執するのも良く無いね。
このスレで優勢に話をすすめているB宗もネットゲーとかになれば
お手上げだしね。
あと二人格闘ゲーぐらいじゃないと描画の負荷が一定にならないから
(Quakeなんかフレームレート高い時と低い時で5倍くらい差が出るし)
余計なウエイト入らない非同期の方がスムーズに見えたりするし。
描画スレッドと内部処理スレッドを分けれるものも、今度は
処理のリエントラント化が限り無くダルいしオブジェクトの同期で
さらに処理が重くなるし別スレッドからは直接描画用の命令叩けない
し、なるべく描画と処理は同じスレッドで処理したいもんなあ。

それよりもWindowsはOpenGLでリフレッシュレートとの同期が取れない
のが腐ってる!もう、冗談じゃねえよ。
199デフォルトの名無しさん:2001/01/22(月) 11:12
>>198 あなたなかなかわかってらっしゃいますな。
もっともな意見でうなずきまくってます。
200195:2001/01/25(木) 21:37
ごめん。ちょっと舌足らずだったっす。

>単純に映像一般では時間ではなくフレームを基準にしているんだってことでしょ。
これはそうなんだけど僕が言いたかったのは
”フレーム単位で処理したいのは作る時に解り易いから”
であって、どうせずれる可能性あるんだから、
”最終的に出来上がったモノのエフェクトがフレーム単位で厳密でなきゃ嫌だから”
って訳じゃないでしょ?
ってことっす。

だから”できるだけ見た目同じになるようにプログラムすればいい”
んであって、完全に同じフレームレートに固執しなくてもいいんじゃ
ないかなーって思った訳でして。
201デフォルトの名無しさん:2001/01/26(金) 14:41
>>197
>混ぜるってのは面白そうなアプローチかも知れませんな。
>B宗1派60fpsの映像を適当にブレンドしながらリフレッシュレート分に伸長。
>実験してみるか……。

これはいいね。
おれの認識では A宗=3Dゲーム用、B宗=2Dゲーム用なのだが、
(異論のある人いる?)
2Dゲームで、ハード的に想定したリフレッシュレートより上になって
しまう場合の弊害はかなり解決するのでは。
サブリミナルタイプの、本当に1フレームだけの効果に対しては完璧
ではないけど、人間の目と認識能力ではそれほど違和感はないん
じゃないかな。
202201:2001/01/26(金) 14:43
↑現段階で実用的なテクニック、みたいな書き方はおかしいですね。
ハードウェアのパワーやVRAM量の問題があるのだし。
203デフォルトの名無しさん:2001/01/31(水) 00:37
>B宗1派60fpsの映像を適当にブレンドしながらリフレッシュレート分に伸長。
悪いとは思わないけど、そんな余裕があるなら
A宗でアンチエリアスかけた方がいいんじゃない?
204196:2001/01/31(水) 02:54
>>203
あたしゃB宗理想主義者なもんで(笑)。
A宗でうまく動いてるゲーム見ると心が揺れ動きますが。
205f:2001/02/06(火) 01:01
ft
206通りすがり:2001/02/06(火) 17:43
前前から疑問に思っていたことが
ここで討論されていたので思わず書き込んでしまいました。
自前でVSYNCを検査する・・ってすごい
方法で感激してます。そういう方法があったのか〜
VSYNC取得関数が動かない = 諦め
という思考方法だったので^^;
207デフォルトの名無しさん:2001/02/06(火) 20:03
ずいぶん前になったのでちょっとおさらい。

>◆A宗:「v += a * dt」
>v-syncに同期。リフレッシュレートは任意。
>◆B宗1派:「v += a」
>タイマーに同期。一定間隔で値を更新する。
>◆B宗2派:「v += a」
>v-syncに同期。何らかの方法でリフレッシュレートを固定する。

んで、

>このスレで優勢に話をすすめているB宗もネットゲーとかになれば

なぜ?
別にv-sync同期じゃなくても、タイマーからdt算出すれば出来るんじゃない?
フルスクリーンとウインドウモードサポートするならv-sync当てにならんし。
208デフォルトの名無しさん:2001/02/06(火) 22:24
◆◆◆結論◆◆◆
3Dゲーム:A宗
2Dゲーム:B宗1派

議論の余地無し。常識です。
209デフォルトの名無しさん:2001/02/06(火) 23:14
>>207
>別にv-sync同期じゃなくても、タイマーからdt算出すれば出来るんじゃない?
それは、どっちかつーとAの方に入るンじゃない?
210207:2001/02/06(火) 23:56
>それは、どっちかつーとAの方に入るンじゃない?
いや、リフレッシュレートに同期ってあるからさ。
フレームレート同期だったらわかるけど。
211デフォルトの名無しさん:2001/02/07(水) 10:54
あうあう、3DでもB宗のほうが楽だにゃー。
212デフォルトの名無しさん:2001/02/08(木) 03:03
ところで最近気合入れてA宗やってみたんだけど、
そんなに面倒じゃないよ。
と、いうわけで3Dも2DもA宗にします。
ただ垂直同期信号取らないビデオボードもあるけどこれは
サポート外だな。暇があったらタイマでしょぼしょぼにサポートしてやるぜ。
ぶぅどぅ信者お前等だよ。
213デフォルトの名無しさん:2001/02/08(木) 10:01
かくして2派は和解を見るのであった。
214デフォルトの名無しさん:2001/02/08(木) 11:46
>>211
3Dカードをアップグレードしてもfpsに変化のない3Dゲーは糞です。
(デイトナとか(ワラ)
215211:2001/02/08(木) 12:37
いや、そりゃ30fpsとか低い数字で固定したりはしないけど。^^;
216デフォルトの名無しさん:2001/02/08(木) 19:07
時代の流れから行くと、今後は液晶モニタが主流になっていくはず。
そうなるとV-Syncに頼るようなコーディングは古臭いものになって
いくのだろうか。
217デフォルトの名無しさん:2001/02/08(木) 20:54
有機ELディスプレイ萌え〜

んでも、アナログRGBとか、リフレッシュレートのある規格で
映像送ってたら、液晶だろうが意味ないような気が。
その辺どうなってるんでしょう?
218デフォルトの名無しさん:2001/02/09(金) 00:03
>>216-217
そもそも垂直同期信号ってディスプレイが出すんだっけ?
ビデオアダプタの方だった気がするんだけど。
詳しい人解説希望。
219デフォルトの名無しさん:2001/02/09(金) 11:54
この辺はハード屋さんに訊いたほうがいいのかなあ。
220デフォルトの名無しさん:2001/02/09(金) 17:11
リフレッシュレートは
一秒間に何回ビデオカードからモニタに画像を転送しているか=画面の更新頻度
ってことですよね。
別に液晶になろうがデジタル転送になろうが関係ないですよね。
ページフリッピングによる一定間隔の画像更新を行う以上、更新に
同期しないけりゃティアリングが発生しますし。

ビデオアクセラレータと液晶コントローラが完全に一体になって、
画像データ読み出し方式が全く違うものが出てくる可能性がない
わけじゃないでしょうが。
221デフォルトの名無しさん:2001/02/09(金) 20:06
液晶にはティアリングはないでしょ?
上から下に向かって画像更新されるわけじゃないから。
むしろ問題になるのは残像じゃない?
222デフォルトの名無しさん:2001/02/09(金) 20:20
>>221
VRAMをページフリップした瞬間に液晶の全画素データが更新されると思ってるの??
ページ単位でビデオカード→モニタに画像データを転送してるんだよ?
一つのページの転送中にページフリップしたら、ティアリングが発生しない
わけがないということが理解できないのだろうか。。。
223デフォルトの名無しさん:2001/02/09(金) 21:56
ビデオカメラには外部同期って仕様のものもあるけど、
一般には、垂直同期信号の発生はビデオカード上のタイミングジェネレータ
で行なう。ディスプレイはそれを受け取って、その信号に従って
同期を行なう。

で、ビデオカード->モニタの転送のバンド幅が一画面分のデータ量xピクセルクロック
より広くない限り、ティアリングは発生するでそ。
224デフォルトの名無しさん:2001/02/10(土) 01:34
・DVI情報広場
http://www.geocities.co.jp/SiliconValley-Bay/9439/
全然解決になってないじゃん、これ。(T-T)
225デフォルトの名無しさん:2001/02/10(土) 13:17
DirectX8ではリフレッシュレートの変更ができるようになってるみたいですが
きちんと動作してます?
どなたか動作検証された方がおられましたら教えてください。

DirectXのスレとどっちに書こうか迷ったんですが、こちらに。
226デフォルトの名無しさん:2001/02/10(土) 14:13
>>225
あっさり撃沈。駄目だった。期待してたんだがつかえね。
でも、最近就職するのに就職作品にChangeDisplaySettings使ってる
けどどの会社でもあっさり動いてくれているみたい。
動かないのはVoodooとか変なボードだけみたい。
そりゃ垂直同期信号取ってくれないようなものじゃ無理だよね。
227デフォルトの名無しさん:2001/02/11(日) 12:21
>>225
だめだった環境を教えてくださいよ。
せめてビデオカードの名前だけでも。
228デフォルトの名無しさん:2001/02/11(日) 13:25
>>227
妙だ。Win2000にすると動作可能。Win98では不可。
ビデオカードはSPECTRA8400(GeForce2GTS)。
状況としてはリフレッシュレートがすべて0と言われる。
Win2000ではそれなりに動作可能。
あとプログラム的に注意することは何かある?
229デフォルトの名無しさん:2001/02/11(日) 19:45
って言うか最近のグラフィックカードだとSwapBuffersした時に
勝手にリフレッシュと同期してくれるよ。
GeforceとG450とRage128で確認出来た。これから出てくるカードも
そうなるだろう。
だからオレはもうリフレッシュレートとの同期については考えない
ことにした。余計なバグを生むことにもなるし。
そうするとやっぱB宗はやっていき辛くなるんじゃないかな(PC業界ではね)。
これからは非同期バリバリのネットゲーの時代だし、そうすると尚の事
タイミング処理をリフレッシュレート主体でやりにくくなる。
230デフォルトの名無しさん:2001/02/11(日) 20:52
>>229
なんでネットゲーだと自動的にA宗になるん?
231229:2001/02/11(日) 21:12
>>230
いや別にB宗でやろうと思っても構わないんだけど、やり辛く無い?
普通はサーバーや多数のクライアント同士で共通の時間軸を設ける
だろうけど、それはリフレッシュレートじゃないだろうしね。
全ての通信を同期させればいいだろうけどインターネットじゃ無理
だし、リアルタイムなゲームでもメッセージを受け取ったら処理って
構図はかわらないと思う。
タイミング処理と描画処理を別々の時間軸でやるのも手だけど、
そんなことしたら複雑だし、そもそも何の為にわざわざリフレッシュレート
と同期してるのかわからなくなる。
本当はもっと色々と理由があるんだけど、無理なわけじゃないんで
色々チャレンジしてみればいいんじゃないかな。
232デフォルトの名無しさん:2001/02/11(日) 23:07
今A宗使ってゲーム作ってるんだけど、フレーム単位の
アニメーションはどうすればいいのだろう?
例えばシンプルなやつだと、キャラの点滅とか。
233デフォルトの名無しさん:2001/02/11(日) 23:15
>>232
いや、つーかそれって関係ないだろ?
その点滅だって何秒に何回するのかってのが仕様としてあって
しかるべきであって無い時点でゲームの仕様から考え直せよ。
ってレベルじゃん。時間とフレームがどう繋がるのがわからないなら
自分で考えて見ることをお勧めするが・・・・・・。
234デフォルトの名無しさん:2001/02/11(日) 23:35
>>233
分かってない人発見。
1秒間に60回点滅するとして、もしFPSが30だったら
どうなると思う?点滅がまったく無くなる、もしくは
キャラが完全に消える。FPSが40とかでも、かなり
不規則な点滅になってしまう。
A宗を使うならフレーム単位のアニメーションは使えないぞ。
235デフォルトの名無しさん:2001/02/11(日) 23:45
>>234
まあそれ言ったらB宗でも、
「1秒間に60回点滅するとして、もしFPSが30だったら
どうなると思う?点滅の速度が半分になる」って具合なわけだし
A宗でもフレーム毎に表示、非表示を切り替えれば一応それらしく
見える。A宗でもB宗でも結局FPSによって点滅の速度は変わっちゃう
んだし。
236デフォルトの名無しさん:2001/02/12(月) 00:46
>>234-235
いや、俺はどっちかっていうとユーザーにリフレッシュレートを
変えてもらう派なんだけど。コンシューマに逝ってから興味が
無くなったっていうかフレームに合わせるのが当たり前っていうか
垂直同期に合わせないとティアリングって結構致命的じゃんって感じだし。
アニメーションもそうだね。実際にいくらリフレッシュレートを
上げたとしてもコマ落ち状態になるだけでゲーム画面としての
綺麗さは60Hzでフレーム単位で処理した方が綺麗だしね。
これいうとユーザーに設定させるのは酷だとか、リフレッシュレート
を上げれば綺麗に写るようにしとかないと駄目とか言われて叩かれるから
どうとも言えないんだよね。
234の言うこともわかるよ。アニメーションは確かにリフレだけを上げれば
綺麗に見えるなんてことは無いからね。実際にやってしまうと
ただコマ落ちした素人が作ったエロアニメみたいになっちゃうしね。
俺はどっちかっていうと異なる環境でのゲーム速度の一定より
アニメーションの綺麗さをとるからね。
237デフォルトの名無しさん:2001/02/12(月) 07:18
フレーム毎の点滅つったら50%半透明みたいな効果狙う場合が多いし
αブレンディングでやっちゃえばどっちの宗でも問題感じなかったりで。

#あ、いや、分かり易い例として持ち出した話なのは承知してるよ
238237:2001/02/12(月) 07:25
あー訂正。
αブレンディングと組み合わせれば、点滅やアニメーションのパターンを
無理やり補間して、何とか綺麗に誤魔化せるって話でござる。うぃ
239デフォルトの名無しさん:2001/02/12(月) 11:45
>>237
点滅と半透明は違うって〜。
普通ゲームで使われる点滅って、敵が弾に当たった時とか、
自分が敵の弾に当たってしばし無敵状態になってる時とか。
半透明じゃそれらしい雰囲気がでないのよ。
240デフォルトの名無しさん:2001/02/12(月) 12:07
単なる点滅なら、A宗だってFPSに同期させればいいんじゃない?
点滅期間を0.5秒間として、100FPSなら50回、60FPSなら
30回点滅することになる。

環境によって点滅の回数は異なるが、着弾を示すための画面
効果なら問題ないだろう。
効果ではなく、本格的に作画した2Dアニメーションでは問題
だろうが、そもそも2DアニメーションをA宗で作るやつはいな
いので問題ない。
241デフォルトの名無しさん:2001/02/12(月) 12:53
>>239
それは先入観なんじゃないのかなあ。
昔からゲームやってる人は点滅してる時が無敵だったからそう見えないと
それっぽくないっての。そんな自己満足的な表現よりもっと映える
表現探した方がいいんじゃない?ゲーム制作者(orおれを目指す者)だったら。
昔はその程度の演出しか出来なかったけど今は違うじゃん。
242241:2001/02/12(月) 12:55
×おれを目指す者
○それを目指す者
おれなんか目指さないっちゅーの
243237:2001/02/12(月) 13:47
>>239
あースマネー。おっしゃる通りだった。
今、実際に試したけど誤魔化せられんかった。
鬱んなったんで氏んどくわ
244デフォルトの名無しさん:2001/02/12(月) 14:01
敵に弾が当たってるのに、何の反応もないゲームって寂しい。
やっぱり白く点滅してくれると「効いてる効いてる。うふふふ♪」
って気分になるよな。それって洗脳されてるのかな?
245デフォルトの名無しさん:2001/02/12(月) 14:05
>>244
うむ、俺も白く点滅がベストの表現な気がした。
2Dシューティングに限定だが。
246デフォルトの名無しさん:2001/02/12(月) 20:49
>>245
じゃ、3Dゲーで「当たってるぅ」って表現はどうゆうのがベストだと思う?
洋ゲーみたく血噴出したりとか?
247名無しさんi486:2001/02/12(月) 21:46
※[HIT 100p]
248デフォルトの名無しさん:2001/02/12(月) 22:01
>>246
加算半透明とモーション
249冷やかしさん:2001/02/13(火) 10:53
2Dは元来がデフォルメの世界だから白点滅でもいいけど、
3D物はグラフィック的には一応リアリティーベースだから、
白点滅で着弾確認はいかがなものか?

着弾したら小さく爆発して、小さい破片が飛び散るとかして欲しい。
打ち込むほど敵機がボロボロになっていくのはいいね。
蒼穹愚連隊とか。
250デフォルトの名無しさん:2001/02/13(火) 13:52
>>249
カワイイ系のゲームで、敵がウサギさんとかの場合どうする?
251冷やかしさん:2001/02/13(火) 14:09
敵がウサギさんなら、かわいく「あいたっ!」って絵で反応しないとダメっ!
かばうように手を上げたり、目をつぶったり、目がバッテンになったり。
252デフォルトの名無しさん:2001/02/13(火) 14:34
ウサギの耳から血を流すのはいかがでしょうか。
253デフォルトの名無しさん:2001/02/13(火) 14:47
ボウガンが突き刺さるのはいかがなものか。
254デフォルトの名無しさん:2001/02/13(火) 15:00
ボウガンが突き刺さったら小さく爆発して、小さい肉片が飛び散るとかして欲しい。
打ち込むほどうさぎの体がボロボロになっていくのはいいね。
255デフォルトの名無しさん:2001/02/13(火) 15:13
ニンジャウォリアー思い出したのはオレだけだろうか>>254
「兎をあがめよめよめよ」
256冷やかしさん:2001/02/13(火) 15:34
>>254
ウケタ
どこがカワイイゲーだ
257デフォルトの名無しさん:2001/02/13(火) 15:46
話を戻すが、テレビアニメのエフェクトをコマ送りして見れば
B宗の必要性が分かるのではないかと存ずる。
1フレーム(2フィールド)×6コマとかそんな感じのザラにあるし。

リアル系ではA宗でオッケーオッケーなんだけどね。
258257:2001/02/13(火) 15:48
アニメでなくても、いっつぁそにー、とか、まぁつぅだ、とかでも可。
259デフォルトの名無しさん:2001/02/13(火) 16:10
テレビアニメは1秒8コマ(相当)(...だった)。
(映画の24コマ/秒の3コマずつを1単位にしている。
これを約30コマのテレビに変換(テレシネ)していた。
最近のデジタル処理のはどうやってるのか知らない)
260通りすがりのアニオタ:2001/02/13(火) 18:06
テレ朝とかすでにフルデジタルで30コマベースの所も多いと聞いた。
(多重ズームとかフィルムだとオプチカル合成じゃなきゃ絶対むりな
処理とか最近バンバン使ってるとこ多いし)
変換は30コマベースでやると誤差が大きいから60フィールドベースで
処理してるはず
だから静止画でみると2重写しでぶれてるコマが結構混じる
(セル画という物も過去の物になりつつあるのだな)
261デフォルトの名無しさん:2001/02/19(月) 10:24
>テレビアニメは1秒8コマ(相当)(...だった)。
そんなん場合によって全然違うって。
同じアニメでも時と場合によって全然変わる。
>変換は30コマベースでやると誤差が大きいから60フィールドベースで
てかなんで60フィールドベースとかって考えになるんだ。
君の頭の中は整数でしか考えれんのかね?
262デフォルトの名無しさん:2001/02/19(月) 15:19
>>261
259じゃないけど、俺も元アニメーターにそう聞いたけどな?
もちろん例外はあるけど、大概はそう……って話だったような。
263デフォルトの名無しさん:2001/02/19(月) 16:06
用語の問題かもしれんが、24コマベースの3コマ撮りである。
264デフォルトの名無しさん:2001/02/19(月) 16:12
>>262
最近のは例外ありまくりですぜ、旦那。
265デフォルトの名無しさん:2001/02/19(月) 20:10
CGが使われてるシーンだけ妙に滑らかになるよな。>アニメ
いや、いいけど。
266デフォルトの名無しさん:2001/02/19(月) 23:39
ゾイドとかな。>265
267デフォルトの名無しさん:2001/02/28(水) 04:46
あげ
268デフォルトの名無しさん:2001/02/28(水) 22:53
ゾイドとかな。>266
269デフォルトの名無しさん:2001/03/06(火) 08:32
安心するスレだ。
自称プロが素人レベルのこと論じ合うなんてほのぼのしてるネ。
270デフォルトの名無しさん:2001/03/15(木) 14:07
ネタが尽きてもageまくれー♪
271デフォルトの名無しさん:2001/03/15(木) 19:54
リフレッシュ論争なんてあったんだ。
人間の目なんて60Hz越えてしまえば、同じでしょ?
60Hzで間に合うように調整かけるのがコンシューマ業界の王道なんだけどな。
古のギャラクシャンもパックマンも60Hz死守してるじゃん。
PCだったら70Hzが基準になるのかな?いやPCゲーの経験はないんだけどさ。
70FPS以上だと目が快適になるのかなー。

ちなみに NTSC->PAL への移植は丁寧なメーカならきちんとスケジュール切って
物にもよるけど、1ヶ月ほど時間をかけるよ。
作業が発生するのはPGだけではないので。
もちろんローカライズの作業はフレームレートだけではなく、テレビの色合いやら
十字架の完全撤廃、宗教用語の完全撤廃などもあるんだけど。
272デフォルトの名無しさん:2001/03/15(木) 21:11
>>269
むしろプロが素人を啓蒙するスレじゃないのか。
273デフォルトの名無しさん:2001/03/16(金) 11:59
一般の人の目であれば 60Hz で十分だと思うよ。
PALだと50Hzだけど、それでも実用的だし。
その時のマシンパワーで60Hzにほぼ確実に間に合うように作るのが
基本ではあるよね。3D時代からなかなか思うようにはいかなくなってきたけど
274ななしさん:2001/03/17(土) 17:24
50Hz はさすがにぴかぴかするぞ。
特にインターレースはひどい。
275デフォルトの名無しさん:2001/03/17(土) 18:13
東日本で蛍光灯とか見ると点滅してるのがわかったりするな。
276デフォルトの名無しさん:2001/03/17(土) 18:37
>>271
そーゆー問題じゃない
>>9を読め
2779:2001/03/30(金) 01:00
どうでもいいが、「宗」がうぜースレだな。
「式」「案」「型」…なんか変えて欲しかった
278デフォルトの名無しさん:2001/05/04(金) 01:25
すんません、終わってる話題ですが、消えるのはもったいないんでageさせてください。
279デフォルトの名無しさん:2001/05/04(金) 01:27
あがらなかった(^^;
280デフォルトの名無しさん:2001/05/04(金) 22:27
ふむふむ。
281デフォルトの名無しさん:2001/05/16(水) 14:40
大麻信者氏ね。
282デフォルトの名無しさん:2001/06/07(木) 15:14
FPSとリフレッシュレートを勘違いしてるヴァカがたくさんいる・・・
283デフォルトの名無しさん:2001/06/07(木) 15:21
First Person Shooting
284デフォルトの名無しさん:2001/06/07(木) 15:42
>>282
違い、教えてほしいよ・・・。
285デフォルトの名無しさん:2001/06/07(木) 15:50
Frame Per Second とリフレッシュレートは違うのですよ。
286デフォルトの名無しさん:2001/06/07(木) 15:58
>>282
終わってるスレageて煽ってどうする(藁
違いが解らねぇ奴はどうせ説明しても理解出来んだろうからほっといてやれよ
287デフォルトの名無しさん:2001/06/07(木) 16:14
fpsがリフレッシュレートを越えても「見ることができない」ってことだよ。
288デフォルトの名無しさん:2001/06/07(木) 20:00
FPS=一人称シューティング(例: doom, quake)
289デフォルトの名無しさん:2001/06/28(木) 21:25
viperV550(だったと思う)がぶっ壊れたからvanta2000とかいう
安いやつ買ってきてつけたのだが、なんか画面サイズ1152*864だと
リフレッシュレートが最大で60台しか設定できない。
1280*1024だと75とか設定できるのになんで1152*864だけ異常に
低いリフレッシュレートしか設定できないんだろうか。
これって陰謀?
290デフォルトの名無しさん:2001/06/28(木) 21:31
>>289
その通り。
陰謀です。
291デフォルトの名無しさん
ZSNESとか60Hzで同期してる気がするんだけど
なんかやってるんかな。
うちのGeForce2MXたん(ドライバ12.90)、
DirectXのプロパティのリフレッシュレート強制設定も効かんのに。