DXライブラリ 総合スレッド その3
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2009/03/31(火) 01:14:36ID:IgyJcgapGUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。
DXライブラリの詳細ついては
http://homepage2.nifty.com/natupaji/DxLib/
を参照して頂きたい。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。
過去スレ:DXライブラリ 総合スレッド
http://pc11.2ch.net/test/read.cgi/gamedev/1197468399/
DXライブラリ 総合スレッド 2008
http://pc11.2ch.net/test/read.cgi/gamedev/1224923873/
0482名前は開発中のものです。
2009/06/17(水) 03:56:59ID:moXGEW/H1,Sleepを使ってFPSを30ほどに落としてやる。
2,時間と同期をとる。
くらいしか思いつかない。
0483名前は開発中のものです。
2009/06/17(水) 07:52:50ID:zFwmddUq0484名前は開発中のものです。
2009/06/17(水) 08:55:08ID:Sg+3JQO30485名前は開発中のものです。
2009/06/17(水) 15:01:39ID:v4ECr6VG作りやすいのは固定フレーム、性能を活かしやすいのは可変フレーム。
自分は面倒なので、60固定前提でやってるんだが
(1)タイマ(ミリ秒)を取得して1フレームの規定時間(16msec)が過ぎるまで待つ
(2)モニタのVSYNCを待つ
(3)モニタのリフレッシュレートを変更する
の3パターン用意して、あとはユーザに適当に選んでもらおうかなと。
まずいかな?
0486名前は開発中のものです。
2009/06/17(水) 18:17:49ID:V4BAg+VP0487名前は開発中のものです。
2009/06/17(水) 18:47:03ID:A2Hqv0+b・環境(グラボの設定)によっては垂直同期信号待ちがOFFになってる場合があるのでFPSは保たれない。
・垂直同期信号待ちがONだとして、FPS保てる状態でも、
モニタのリフレッシュレートを60にしてたり70にしてたりってのはユーザーの好き好きなので、
作り手の望んだとおりのFPSになってくれるとは限らない。
0488名前は開発中のものです。
2009/06/17(水) 20:28:42ID:00woQzQy0489名前は開発中のものです。
2009/06/17(水) 20:53:25ID:00woQzQyhttp://www.pqrs.org/tekezo/gba/index.html.ja
http://omoshiro-joho.com/tech-center/cgi-bin/wiki/index.php?Linux%A4%C7GBA%A5%B2%A1%BC%A5%E0%B3%AB%C8%AF
http://nocash.emubase.de/gbatek.htm
http://belogic.com/gba/directsound.shtml
0490名前は開発中のものです。
2009/06/18(木) 01:52:47ID:lg5GVuaj0491名前は開発中のものです。
2009/06/18(木) 04:16:26ID:eqFlz8O10492名前は開発中のものです。
2009/06/18(木) 04:54:12ID:U/ILN7Qk一応あるっしょ。
0493名前は開発中のものです。
2009/06/18(木) 05:03:47ID:4gTcdCic0494名前は開発中のものです。
2009/06/18(木) 05:07:59ID:U/ILN7Qkアクションゲームのゲーム速度2割アップとか結構きついですぜ
0495名前は開発中のものです。
2009/06/18(木) 07:25:22ID:8Inai5Jq開発中止?
0496名前は開発中のものです。
2009/06/18(木) 09:48:52ID:obCaTvEe0497名前は開発中のものです。
2009/06/18(木) 16:23:14ID:FAWLSPyh気づくのはいつもしばらくプレイしてからだった
0498名前は開発中のものです。
2009/06/18(木) 16:53:46ID:U/ILN7Qk気付かぬうちに難易度が上がってたり、タイミングが変わってミスを誘発させたりするって
ちょっと怖いよな。
0499名前は開発中のものです。
2009/06/18(木) 17:10:57ID:4gTcdCicってことは2次元アクションでいえば1フレーム毎の移動量が固定なのか。
自分自身も楽だからそういう作り方をしているけど…
例えばあるゲームで
60FPSだと重いのでコンフィグで30FPSに変更って場合は
ゲーム速度そのものは変わらないものだと思っていた。
0500名前は開発中のものです。
2009/06/18(木) 17:35:08ID:u8KJWVMz時間で処理、描画だけFPSで更新なら変わらないよ。
全体をFPS60処理だと60より上に上がらないようにしてるのが一般的かなぁ。
ツールで簡単に上げれたり、処理間に合わないとFPS下がって全体の速度も低下する。
0501名前は開発中のものです。
2009/06/18(木) 17:56:28ID:U/ILN7Qkフレームではなく時間単位で処理してるなら
ゲーム速度云々の話題にすらならんと思うよ。
0502名前は開発中のものです。
2009/06/18(木) 21:48:15ID:3XyNBKLr0503名前は開発中のものです。
2009/06/18(木) 21:57:55ID:y4gPpvjp0504名前は開発中のものです。
2009/06/18(木) 22:12:42ID:4gTcdCicユーザーをゲームに合わしちまえばいいんだ
0505名前は開発中のものです。
2009/06/18(木) 23:01:35ID:7QIAxIr+0506名前は開発中のものです。
2009/06/18(木) 23:19:36ID:cOrVzTjy違うんじゃない?
モニタのリフレッシュレートが60だろうが70だろうが時間単位で処理するからこそ
スピード一定でティアリングも発生しないようにできるんでしょ。
垂直同期信号が切ってあるなら、そもそもティアリングは発生してあたりまえだろうし。
0507名前は開発中のものです。
2009/06/18(木) 23:47:20ID:3XyNBKLr1画面分のデータの構築途中でそのメモリイメージが画面に表示されて画面上部と下部でフレームがずれるということだから
ティアリングが発生するということじゃないの
0508名前は開発中のものです。
2009/06/18(木) 23:58:10ID:cOrVzTjyなぜ時間単位で処理する必要があるかって言ったら、
垂直同期信号待ちをして、ティアリングを起こさないようにしたいけど、
ユーザーのモニタのリフレシュレートが60なのか70なのかが判らない、からでしょ?
0509名前は開発中のものです。
2009/06/19(金) 00:03:49ID:Wkij18nv実際の画面の更新途中でメモリ上の画面データが更新された場合に、描画済み画素と未描画画素でフレームがずれるためティアリングが発生する、だった。
要するにAPIでリフレッシュレートを60に設定して60前提で作ればよい。60に対応してないモニタを使ってるやつのことは知らない。
0510名前は開発中のものです。
2009/06/19(金) 00:08:11ID:AlkmRsbh0511名前は開発中のものです。
2009/06/19(金) 00:12:38ID:s7w0uGNMFPS指定APIは過信してはいけない
上のほうにあるようにドライバ側の設定が優先される
0512名前は開発中のものです。
2009/06/19(金) 00:22:34ID:Wkij18nv0513名前は開発中のものです。
2009/06/19(金) 00:47:10ID:pN8o6lEn「60以外は知らん」と言いきっちゃうのも、それはそれでアリな気がする
0514名前は開発中のものです。
2009/06/19(金) 02:05:59ID:7uKPrG8o0515名前は開発中のものです。
2009/06/19(金) 03:38:42ID:AlkmRsbh0516名前は開発中のものです。
2009/06/19(金) 08:04:02ID:huFKHnzQ0517名前は開発中のものです。
2009/06/19(金) 09:00:27ID:Dq7L9OoN20世紀へお帰り下さい
0518名前は開発中のものです。
2009/06/19(金) 09:40:02ID:4AnMu6gm動作環境をテキストに書いたら、それを満たすあらゆる環境で同じように動いてもらわないと困る
デフォルトで不具合が出る可能性があるなら、設定で変えられるようにしなきゃ駄目
なるべくたくさんの環境でテストするのも大事
0519名前は開発中のものです。
2009/06/19(金) 12:28:29ID:8D0wDPEb0520名前は開発中のものです。
2009/06/19(金) 12:57:07ID:ciGq9GNbそういう選択式になってるゲームってほとんどみないよな?
普通はどうやってんだろ、ってのが話題の焦点じゃないかな。
0521名前は開発中のものです。
2009/06/19(金) 15:25:14ID:pN8o6lEn実際、60Hz固定のモニタも多いんじゃね?
0522名前は開発中のものです。
2009/06/19(金) 16:07:46ID:L4Ogxl+D飽きた
0523名前は開発中のものです。
2009/06/19(金) 16:47:37ID:8D0wDPEb0524名前は開発中のものです。
2009/06/19(金) 23:33:13ID:Dq7L9OoNだから帰れってww
0525名前は開発中のものです。
2009/06/19(金) 23:50:46ID:L4Ogxl+DじゃぁDxLibの今後
俺はもう少し発展してくれてもいいと思う、3Dを強化して欲しいね
0526名前は開発中のものです。
2009/06/20(土) 00:41:17ID:ynTX3CaL3D強化するなら作り直しレベルだろ
0527名前は開発中のものです。
2009/06/20(土) 00:42:51ID:FZJG9pXN0528名前は開発中のものです。
2009/06/20(土) 00:53:36ID:gQS8hglY0529名前は開発中のものです。
2009/06/20(土) 01:03:05ID:X3CDDO5oいま3D機能作ってるって公式掲示板で言ってたけど・・・
意外とみんなチェックしてないんだな
0530名前は開発中のものです。
2009/06/20(土) 01:08:17ID:ppcvkMn4なん…だと?
0531名前は開発中のものです。
2009/06/20(土) 01:49:27ID:FZJG9pXN0532名前は開発中のものです。
2009/06/20(土) 02:34:40ID:gQS8hglY0533名前は開発中のものです。
2009/06/21(日) 02:15:20ID:dtFx8GuNcsv形式で出力して、読み込んで描画したいんだけど上手くいきません
#include "DxLib.h"
int WINAPI...
{
if( DxLib_Init() == -1 ) return -1 ;
int mapchip[256];
char mapdata[15][20];
int filehandle;
LoadDivGraph("a.bmp",256,16,16,16,16,mapchip);
f = FileRead_open("a.csv");
FileRead_gets(mapdata,num,filehandle);
このあとfor文でFileRead_getsで読み込んだ1行を15回くりかえして
mapchipに入れていきたいんだけど・・・
FileRead_getsのnumに何を入れていいのかが??状態。
リファレンス読んでもメモリ領域のサイズて書いてあるけど・・・
日本語おかしくてスマン
0534名前は開発中のものです。
2009/06/21(日) 02:35:09ID:ffHKmVPnてか、a.csvの内容はどんな感じになってんの?
0535名前は開発中のものです。
2009/06/21(日) 02:48:44ID:aQAsxkjfint mapdata[15][20],mapwidth= 0, mapheight= 0, mapchipwidth, mapchipheight, bitcount;
int filehandle;
char buf[1024];
filehandle = FileRead_open("a.csv");
if (filehandle==0){エラー処理}
int gyoucount = 0,retucount = 0, iVal,layercount;
while((FileRead_eof(filehandle) == 0)&&( gyoucount < mapheight+1 ))
{
FileRead_gets(buf, 1023, filehandle);
if (gyoucount == 0){
sscanf_s(buf, "%d,%d,%d,%d,%d,%d", &mapwidth, &mapheight, &mapchipwidth, &mapchipheight, &layercount, &bitcount);
}else{
while(retucount<mapwidth){
char *next_token;
if (retucount==0){
iVal=atoi(strtok_s(buf, ",",&next_token));
}else{
iVal=atoi(strtok_s(NULL, ",",&next_token));
}
mapdata[gyoucount-1][retucount] = iVal;
retucount++;
}}
gyoucount++;
retucount = 0;
}
FileRead_close(filehandle);
if( ( gyoucount != mapheight+1 ) || ( retucount != 0 ) ){エラー処理}
0536名前は開発中のものです。
2009/06/21(日) 02:49:49ID:dtFx8GuN0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1
1 1 1 1 1 0 0 0 0 0 0 0 1 1 3 3 0 0 0 0
1 1 1 1 1 1 0 0 0 0 0 0 0 0 3 3 0 0 0 0
1 1 1 1 1 1 1 0 0 0 0 0 3 3 3 0 0 0 0 0
1 1 1 1 1 1 1 0 0 0 3 3 3 3 3 3 0 0 0 0
0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 0 2 2 0 0
0 0 2 2 2 2 2 2 0 0 0 0 3 3 0 2 2 0 0 0
0 0 0 0 0 2 2 2 0 0 0 0 2 2 2 2 0 0 0 0
0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0が草原で1が川で2が森で3が山です
1行ずつ読み込んでchar chip[ ][ ]に入れて
その番号をint型の数字に変換してmapchip[ ]で描画させたいんですが・・orz
ごめん、メモリ領域のサイズってどうやって調べるの?
0537名前は開発中のものです。
2009/06/21(日) 04:17:54ID:jkwbtsZu0538名前は開発中のものです。
2009/06/21(日) 08:29:25ID:vb/GsENJ0539名前は開発中のものです。
2009/06/21(日) 09:37:49ID:SurdRKYg遅れたけど正確にはダブルバッファリングしてるからティアリングはおきないよ。
データの構築中に画面に表示される事は無い。
あと垂直同期を待ちつつタイマーで調整する事も可能。
具体的にはタイマーでfpsを調整すれば、ゲームが基準にするのはタイマーじゃなく、
一定間隔が保障されてるフレームを基準にすればおk
0540名前は開発中のものです。
2009/06/21(日) 13:35:35ID:QJhUeuVRifstream+For2重ループで読み込んでしまえば良い
都合のいいことに半角スペース無視ってくれるからね
c++知らなければスルーしてよし
0541名前は開発中のものです。
2009/06/21(日) 13:59:11ID:E25maqZD最期の2行の意味をくわしく。
0542名前は開発中のものです。
2009/06/21(日) 14:24:01ID:ZO5ct3aw60の時は、前回の1/60秒後の世界を描くし50の時は1/50秒後の世界を描くんだろう。
0543名前は開発中のものです。
2009/06/21(日) 14:40:01ID:/SjwP+Lmそういうのが載ってる詳細なリファレンスは無いんですか?
0544名前は開発中のものです。
2009/06/21(日) 15:01:10ID:E25maqZD下記に追記する形で。
while(1){
main_loop();
flip();
}
0545名前は開発中のものです。
2009/06/21(日) 15:55:05ID:gvSWV/Tl:
ScreelFlip()
時間計測A(ミリ秒)
:
ScreenFlip()
時間計測B(ミリ秒)
:
移動距離算出 100 * ( B-A ) / 1000
:
ScreenFlip()
時間計測〜
って感じ?
0546名前は開発中のものです。
2009/06/21(日) 17:22:04ID:nC5CYBlY垂直同期が取れるなら
while(1){
main_loop();
sleep until 垂直同期60hz;
flip();
}
取れないなら
A = GetTickCount();
while(1){
main_loop();
B = GetTickCount();
sleep(17 - ((B - A) % 17)); //1tick = 0.001秒, 17tick = 1/60秒と仮定
flip();
A = B;
}
ただ、こうするとsleepしてる時間が無駄だから…
0547名前は開発中のものです。
2009/06/21(日) 17:24:40ID:nC5CYBlYmain_loop()の処理時間が十分に短いなら
A = GetTickCount();
while(1){
do {
main_loop();
B = GetTickCount();
} while (B-A < 17);
flip();
A = B;
}
あるいはタイマーを使うか…
A = GetTickCount();
while(1){
main_loop();
B = GetTickCount();
SetTimer(17 - ((B - A) % 17), flip());
A = B;
}
それとも描画と計算は別スレッドにするか…
0548名前は開発中のものです。
2009/06/21(日) 20:10:23ID:SurdRKYgそうとは限らないよ。
まずfps制限と描画を完全にわけて考える。
fps制限は60に設定したとする。
int nowtime = GetNowCount();
static int oldtime = 0;
static int frametime = 1000 / 60;
int diftime = nowtime - oldtime;
while(1)
{
if(diftime >= frametime)
{
oldtime = nowtime;
break;
}
else
{
Sleep(1);
nowtime = GetNowCount();
diftime = nowtime - oldtime;
}
}
これで垂直同期しようがしまいが60で固定された。
1ループで1フレーム1/60秒が保障されたので、1秒で100ドットキャラを進ませたいのなら、60フレームで100ドット進ませればおk
5秒後に何かをしたいときも、5秒をタイマーで計測するんじゃなくて300フレーム後に行えばおk
だから>>539で「ゲームが基準にするのはタイマーじゃなく、一定間隔が保障されてるフレームを基準にすればおk」と書いた。
ただ、これだとスペック不足によって60fpsが出ない場合や、リフレッシュレートが60以外でかつ垂直同期を待った場合中途半端な同期によって60fpsが出ない場合(これは垂直同期を待たない事で解決出来る)、
フレームがゲームスピードの基準になっているのでゲームスピードが遅くなってしまう。(処理落ち)
これはこれでおkならそのままでいいが、ゲームスピードだけは死守するのならフレームスキップ(コマ落ち)が必要になる。
この方法も色々あるので今回は割愛。
0549名前は開発中のものです。
2009/06/21(日) 20:20:31ID:E25maqZD0550名前は開発中のものです。
2009/06/21(日) 20:27:19ID:SurdRKYgティアリングの話がしたいの?
>垂直同期を待つってことは動作速度がリフレッシュレート固定になるってことじゃないの?
これを解決したいの?
どっちなの?
てか548を読んで解決出来なかったの?
質問しといてなんなの。
0551名前は開発中のものです。
2009/06/21(日) 20:38:53ID:E25maqZD0552名前は開発中のものです。
2009/06/21(日) 20:52:15ID:dtFx8GuN書いてあるよ
0553名前は開発中のものです。
2009/06/21(日) 20:52:45ID:n8mlBebR>>539に書いてあんじゃん
SurdRKYgがかわいそすぎる、援護するぜ
んでぐぐったらすぐにわかりやすいのでてきたぞ
ちょっとは自分で調べろ
ttp://spitfire.client.jp/program/fps.html
0554名前は開発中のものです。
2009/06/21(日) 20:55:52ID:dtFx8GuN0555名前は開発中のものです。
2009/06/21(日) 21:15:08ID:E25maqZDリフレッシュレートをAPIで固定する、か
リフレッシュレートを何らかの方法で取得して、1フレームの移動量をリフレッシュレートに合わせて変更する
しかないわけか。
0556名前は開発中のものです。
2009/06/21(日) 21:26:14ID:nqKSgOSf何が「なるほど」なんだか・・・
548をどう読めば
「リフレッシュレートを何らかの方法で取得して、1フレームの移動量をリフレッシュレートに合わせて変更する 」
の説明になるんだよ
読む気がないなら質問なんてするな
0557名前は開発中のものです。
2009/06/21(日) 21:33:30ID:E25maqZDダブルバッファリングしてるからティアリングはおきないとか言ってるし。
0558名前は開発中のものです。
2009/06/21(日) 21:41:05ID:OYxJ3LRg垂直同期信号待ちしないと、裏画面と表画面切り替える瞬間にモニタ画面更新される事もあるから結局ティアリングは発生する。
0559名前は開発中のものです。
2009/06/21(日) 21:59:20ID:SurdRKYg垂直同期を待たない事で解決出来るのは60fpsにならない場合の話だから下5行は読まなくていいよ。
しかもコマ落ちさせれば同期待ちでも解決出来るって書いてあるのに…。
120Hzのモニタで同期待ちするけど60fpsに制限すればゲーム速度も一定になるでしょ?
1フレームの移動量を変更するんじゃなく、移動量をフレームに合わせれば常に一定でしょ?
>>558
flipする時はコピーするんじゃなくてVRAMの参照先を変えるだけだから、VRAM上のデータを書き換え途中って事は無いと思うけど。
だからどの瞬間においても描画途中で画面更新される事は無いと思うんだけど違うのかな?
もちろんこれはティアリングの厳密な意味でのことなので、広義の意味の 画面のちらつき=ティアリング として使われる事についてはそれでいいけど。
0560名前は開発中のものです。
2009/06/21(日) 22:03:54ID:nqKSgOSf残念だけど垂直同期を待たない場合はビデオカードがモニタに映像を送信している間でも
参照先のVRAMアドレスを変えてしまうからティアリングは発生する
0561名前は開発中のものです。
2009/06/21(日) 22:08:13ID:OYxJ3LRgDXライブラリで裏画面への描きこみ、ScreenFlipってほとんどデフォだよね?
これが君のいうダブルバッファリングでしょ?
ScreenFlipの垂直同期信号待ちをOFFにして、
タイマーだけでスピード固定するようにして、フルスクリーンで動かしてごらん。
ティアリング一目瞭然だから。
0562名前は開発中のものです。
2009/06/21(日) 22:11:13ID:SurdRKYgそうなんだ。どうもありがとう。
同期しない事によるちらつきは画面更新部分と非更新部分の時間がばらばらな事による現象かと思ってた。
モニタのVsync信号の方が偉くて、そのタイミングでflipした時は次のVRAMの更新先を強制的に参照するみたいな認識でいいのかな。
0563名前は開発中のものです。
2009/06/21(日) 22:16:46ID:SurdRKYgややや、ちらつくのは一目瞭然だけど、ティアリング(=上半分表画面で下半分裏画面のような状態)かどうかっていのは人間の目では判別不可能でしょ。
そのちらつきの原因は、更新部分と更新して無い部分の時間差によるものだと思ってた。
例えば背景が流れる画面の場合、1場面を■、次の場面を□とした場合、
■□■□■□■□■□
と見えればちらつかないが、
■■□■□□□■■□
のように見えるとちらついてみえると思うんだ。
でも>>560のレスで、ティアリング自体も起きているとのことなので一応解決出来た。
これはもうちょっと自力で調べてみようと思う。
0564名前は開発中のものです。
2009/06/21(日) 22:23:40ID:OYxJ3LRg描き終わって、次の画面が描き始められるまでの一瞬の間にVRAMのアドレスを切り替える、って事だね。
そうする事で初めてティアリングを防げる。
>>563
ちらつくというより画面が波打つ、と言った方がよかったかな。
>ティアリング(=上半分表画面で下半分裏画面のような状態)かどうかっていのは人間の目では判別不可能でしょ。
ぴったりには合わないとは言え、だいたい60FPSで固定しようとしてスピード調整してるわけだから
ズレが生じるのも大体画面更新の同じタイミングになるわけ。
当然、人間の目にもはっきり判るよ。
0565名前は開発中のものです。
2009/06/21(日) 22:40:54ID:Fv4f33jD固定フレームレートの2Dゲーははっきりとわかる
キャラだけならともかく背景のスクロールもよくつかわれるからくっきりと
3Dとかで可変フレームレートだとわかりにくくなるかな
でも2Dメインでしょ、DXライブラリ
0566名前は開発中のものです。
2009/06/21(日) 22:52:23ID:i9HN6tkr垂直同期を待たずにティアリングを抑制する方法を答えよ
答)
垂直同期信号の発生周期をフリップのタイミングの合わせればよい
0567名前は開発中のものです。
2009/06/21(日) 23:06:19ID:FjFdKqe+0568名前は開発中のものです。
2009/06/21(日) 23:09:10ID:SurdRKYgCRTの場合は走査線があるので画面の上半分と下半分で違う場合もあると思うんだけど、
液晶の場合は1画面をいっぺんに更新するわけだけど、それでも上半分と下半分で違うようなものになるってことなのですか?
VRAMから送られるデータは画面の左上から右下のデータが順次送られてるのかな?
そしてその送られてる時間がネックになっていてその間にflipしたらバックバッファの途中のアドレスから参照されるってこと!?
それってそもそもおかしくないですか?
バックバッファが出来上がっていない可能性もあるし、どうせ同期待ちしていないんだからとりあえずフロントバッファのデータを送りきってからバックバッファ分を送ればいいわけだし。
じゃあ将来例えば物凄くリフレッシュレートが高くなった場合、VRAMからモニタにデータを送る時間よりもモニタの更新速度の方が速かったりしたら
"同期待ちしてるのにティアリングが起きてる"っていう最悪な状態になっちゃいそうですが。
なのでやっぱり液晶の場合はティアリングは起きていないと思いますがどうでしょう?
>>565
えと、だから、画面更新に合わせずに好き勝手にflipしたら、
ある1枚が長く見えてるかもしれないしある1枚が欠損しているかもしれない。
だからちらつくように見えると思うんだけど、
肉眼でただちらつくように見えるからってそれはティアリングが起きてる証明にはなってないよ。
0569名前は開発中のものです。
2009/06/21(日) 23:33:13ID:E25maqZD0570名前は開発中のものです。
2009/06/21(日) 23:41:01ID:nqKSgOSf>VRAMから送られるデータは画面の左上から右下のデータが順次送られてるのかな?
Yes
>そしてその送られてる時間がネックになっていてその間にflipしたらバックバッファの途中のアドレスから参照されるってこと!?
Yes
>バックバッファが出来上がっていない可能性もあるし、どうせ同期待ちしていないんだからとりあえずフロントバッファのデータを送りきってからバックバッファ分を送ればいいわけだし。
?
何を言いたいのか良くわからないけど
VRAMのデータをモニタに送るタイミングはPC側からは操作できない
リフレッシュレートに依存する
>じゃあ将来例えば物凄くリフレッシュレートが高くなった場合、VRAMからモニタにデータを送る時間よりもモニタの更新速度の方が速かったりしたら
>"同期待ちしてるのにティアリングが起きてる"っていう最悪な状態になっちゃいそうですが。
縦解像度nの画面データをモニタに送る流れ
0lineを転送→水平同期期間→1lineを転送→水平同期期間→
nlineを転送→垂直同期期間→0lineを転送→水平同期期間
つまり、垂直同期間は1画面分のデータを転送した後にくるので、
「VRAMからモニタにデータを送る時間よりもモニタの更新速度の方が速い」
というのはそもそもありえないよ、nline分送る前に垂直同期期間に突入する事はないから・・・
0571名前は開発中のものです。
2009/06/21(日) 23:45:26ID:nqKSgOSf>リフレッシュレートに依存する
厳密には設定した解像度とリフレッシュレートに応じて発生する
水平同期信号と垂直同期信号に依存する
>0lineを転送→水平同期期間→1lineを転送→水平同期期間→
>nlineを転送→垂直同期期間→0lineを転送→水平同期期間
0lineを転送→水平同期期間→1lineを転送→水平同期期間→
(n-1)lineを転送→垂直同期期間→0lineを転送→水平同期期間
の誤り
0572名前は開発中のものです。
2009/06/22(月) 00:07:43ID:kame7wv0おまえ顔真っ赤だぞ?
0573名前は開発中のものです。
2009/06/22(月) 00:08:14ID:1Ugl+7iQ0574名前は開発中のものです。
2009/06/22(月) 00:09:59ID:ErP4dB7Rそういうことだったんですね。
詳しい説明どうもありがとうございます。
>VRAMのデータをモニタに送るタイミングはPC側からは操作できない
>厳密には設定した解像度とリフレッシュレートに応じて発生する
>水平同期信号と垂直同期信号に依存する
ビデオカード側がモニタに送るタイミングを主導しているんだと思ってましたけど、そこが間違っていたようです。
0575名前は開発中のものです。
2009/06/22(月) 00:14:49ID:kAGY284T>だから、画面更新に合わせずに好き勝手にflipしたら、
>ある1枚が長く見えてるかもしれないしある1枚が欠損しているかもしれない。
>だからちらつくように見えると思うんだけど、
ちらつくっていうよりも、それはがたつくというか、コマ落ちとかそういう心配でしょ?
ティアリングってのは君が言ってるように上と下の画像にズレが生じる現象だから、
横に対して線が入って(実際にはドット単位でずれてる)波打ってるようにみえる。
コマ落ちだったらこうは見えないはずでしょ?
実際にプログラム動かしてみてみれば一目瞭然だと思うんだが……。
0576名前は開発中のものです。
2009/06/22(月) 00:17:48ID:VZ3co5HH14歳のやつ
計算式思い切り間違えているぞ。
実際にリフレッシュレートの違うモニタで確かめたから間違いない。
0577名前は開発中のものです。
2009/06/22(月) 00:28:31ID:XZV3fJ2J0578名前は開発中のものです。
2009/06/22(月) 09:11:17ID:4PYRYd3U何がどう違うのか具体的に例をつけて書け
改良案も書け
0579名前は開発中のものです。
2009/06/22(月) 14:34:23ID:N6BYq6ehママにでも頼め。
0580名前は開発中のものです。
2009/06/22(月) 15:54:58ID:VZ3co5HH自分で考える癖をつけよう。
適当な数字を入れて検証してみ。
明らかにおかしいのがわかるから。
どうおかしいのかわかれば治し方は自明だと思う。
0581名前は開発中のものです。
2009/06/22(月) 17:39:07ID:oZ+8nNkj学生さんなのかな?
デジタル写真に法的な証拠能力は無いわけだが
■ このスレッドは過去ログ倉庫に格納されています