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/
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学生さんなのかな?
デジタル写真に法的な証拠能力は無いわけだが
0582名前は開発中のものです。
2009/06/22(月) 17:40:41ID:pV5yAQzs0583名前は開発中のものです。
2009/06/22(月) 18:16:54ID:VZ3co5HH0584名前は開発中のものです。
2009/06/22(月) 20:45:11ID:C5JJD30U0585名前は開発中のものです。
2009/06/22(月) 20:51:20ID:CIAC500Z0586名前は開発中のものです。
2009/06/22(月) 20:51:55ID:kame7wv0いい年こいて2chやってんじゃねえよカス
0587名前は開発中のものです。
2009/06/22(月) 21:05:11ID:CIAC500Z0588名前は開発中のものです。
2009/06/22(月) 21:10:13ID:kame7wv00589名前は開発中のものです。
2009/06/22(月) 21:11:51ID:CIAC500Z0590名前は開発中のものです。
2009/06/22(月) 21:32:05ID:6Vl6l2Pm0591名前は開発中のものです。
2009/06/22(月) 21:58:40ID:kame7wv0オッサンにもなってゲームでも作ってんスかね?w
0592名前は開発中のものです。
2009/06/22(月) 22:52:27ID:wZqXAX7r0593名前は開発中のものです。
2009/06/22(月) 23:27:33ID:PR8N99oV0594名前は開発中のものです。
2009/06/22(月) 23:37:18ID:6Vl6l2Pm0595名前は開発中のものです。
2009/06/23(火) 00:57:26ID:JW/qeXlf0596名前は開発中のものです。
2009/06/23(火) 01:04:40ID:/wkYhisO0597名前は開発中のものです。
2009/06/23(火) 09:24:14ID:eUvBMQ0GDXライブラリでおもしろいゲーム創っていこう。
0598名前は開発中のものです。
2009/06/23(火) 09:52:25ID:dhA25QDvこういう奴は駄目だな……
デバッグ報告になってない
再現例も書けない奴は現場に出てこないでほしいと思う
そもそも「適当な数字を入れたら」ってのは、「適当な数字が必ず入る」という前提なのか?
プログラムの動作の中で「適当な数字」が入らざるを得ないような状況を説明できるのか?
例えばOSやモニタやリフレッシュレートを変えたらおかしい、と言うなら説明になるが
チート使ったらゲームがバグった、レベルの議論は論外だ
こういう人に限って動的な数値に固定値を代入したりしてるんだから
0599名前は開発中のものです。
2009/06/23(火) 09:57:56ID:NMdhocxd現場では嫌がられると思うぞ。
0600名前は開発中のものです。
2009/06/23(火) 09:58:29ID:NvkMU1Q4わからないなら、わかりません教えてくださいって素直に言えばいいんだよ。
0601名前は開発中のものです。
2009/06/23(火) 10:49:50ID:4P883XyE0602名前は開発中のものです。
2009/06/23(火) 12:18:26ID:A0fh8Dl0なんでこんなカリカリしてんのさ
0603名前は開発中のものです。
2009/06/23(火) 12:28:04ID:btxPW8HG0604名前は開発中のものです。
2009/06/23(火) 15:57:39ID:+DVKp8CTわからないなら素直にそういえばいいじゃない。
>例えばOSやモニタやリフレッシュレートを変えたらおかしい、と言うなら説明になるが
>>576
疑うならリフレッシュレート変えて実際に試してみ。
0605名前は開発中のものです。
2009/06/23(火) 17:46:43ID:ifo/8btq0606名前は開発中のものです。
2009/06/23(火) 22:32:28ID:BZp72+wO掲示板だし
そもそも教えない奴にこそ性格に問題抱えてる事がほとんど
0607名前は開発中のものです。
2009/06/23(火) 22:34:58ID:BZp72+wOググレとかそれ以前のことでしょとか嫌味吐くのおまえらじゃん
0608名前は開発中のものです。
2009/06/23(火) 23:13:33ID:joZZV7Mo例えば、タイトル画面でスタートボタン押してから次の画面が表示されるまでの待ちの処理ってのはどうやってフレーム単位で処理すればいいんだろう。
0609名前は開発中のものです。
2009/06/23(火) 23:19:45ID:+iWMMldZこれだけ色々答えてくれる場でなんでそういう考えに至るのか。
あまりにガキ過ぎる。
0610名前は開発中のものです。
2009/06/23(火) 23:21:51ID:UNSoodNB0611名前は開発中のものです。
2009/06/23(火) 23:24:00ID:ifo/8btqどういう意味?
待ちの時間って、本当に何もしないって事?
それともデータロードとかしてる時の事?
0612名前は開発中のものです。
2009/06/23(火) 23:53:01ID:95CP5Nnoガキは教えて貰うのが当たり前だと勘違いしてるから始末が悪い。
0613名前は開発中のものです。
2009/06/24(水) 00:21:16ID:9O2FRRtx0614名前は開発中のものです。
2009/06/24(水) 00:45:52ID:km6ob3xz//14歳本より
//リフレッシュレートの高い環境ほど1フレームあたりの移動量を小さくしfloatの配列にセットする
void SetFrameRate()
{
float frametime = 0;
unsigned int s = GetNowCount();//計算開始時刻をsに代入
for(int i=0; i<30; i++)
{
ScreenFlip();
unsigned int e = GetNowCount();//計測終了時間をeに代入
frametime += e - s ;
s = e;
}
frametime = frametime/30;//30回採取した経過時間の平均を取る
for(int i=1; i<20; i++)
{
idouryou[i] = i / frametime * 16.67;//←ここの式が間違い!自力で治そう!
}
}
解説文は間違っていないから単純ミスだろう
適当な数字を入れてみって言ったのは
frametimeの値が小さくなればどうなるか式に入れて考えてみってこと
試すまでもなくこの式がおかしい事が判る筈
0615名前は開発中のものです。
2009/06/24(水) 01:14:19ID:OqjteeH50616名前は開発中のものです。
2009/06/24(水) 01:20:49ID:zu36k+NF答え言っちゃいけないのかな
あそことあそこ入れ替えるでおk?
0617名前は開発中のものです。
2009/06/24(水) 01:31:30ID:km6ob3xzうん。
それでおk。
ちなみに初版で気付いてラトルズに付属の葉書で出したが
C++本でも後の版でも訂正されなかった。
サポートページに訂正箇所のpdfがあるが読んだら全然違う箇所のことだった。
0618名前は開発中のものです。
2009/06/24(水) 02:15:36ID:6DfYO0Sm0619名前は開発中のものです。
2009/06/24(水) 10:34:44ID:QnhT+AWI0620名前は開発中のものです。
2009/06/24(水) 15:00:37ID:iWb66gX0これ買ったらDXライブラリの作者さんに何らかのお金が行くんだろうか?
行くなら買ってもいいかなあ。
0621名前は開発中のものです。
2009/06/24(水) 19:31:31ID:iPuVSgwO何で答えを言っちゃいけないとかいう言葉が出るの?お前は?
バカなの間抜けなの?なにがそんなに秘密にしたがんの?死ねば?
0622名前は開発中のものです。
2009/06/24(水) 20:29:05ID:2pcTgAck0623名前は開発中のものです。
2009/06/24(水) 20:33:55ID:cCHdRy2i釣りであってくれw
0624名前は開発中のものです。
2009/06/24(水) 20:53:30ID:km6ob3xz0625名前は開発中のものです。
2009/06/25(木) 00:07:29ID:lGFh6/SQ0626名前は開発中のものです。
2009/06/25(木) 00:30:15ID:z4Ht8mWs0627名前は開発中のものです。
2009/06/28(日) 16:38:04ID:Mn3+4Podclass Enemy{};
と
class Player{};
ってのがあったとして、両方とも座標用変数がpribate:になってる場合、両者の当たり判定はどうやって組んだらいいかな?
あと、Enemyをたくさん出したい場合って、class Enemy型の配列をつくっていいの?
それとも他になにか良い方法があるのかな?
今現在、練習を兼ねてミニゲームのようなものを作ってて行き詰っちゃって。
よかったら教えてください。
0628名前は開発中のものです。
2009/06/28(日) 18:36:01ID:zlbWct1+まあ普通は getx(){return x;} という public なメンバ関数から座標を取得するのかな
もう一方の方は俺はEnemy型のlist でやってるけど
配列でも別にいいんじゃないかな
まあ俺みたいなへぼいのから聞くより出来る奴から聞いたほうがいいと思うが
0629名前は開発中のものです。
2009/06/28(日) 18:52:38ID:L4rlBUkj■ このスレッドは過去ログ倉庫に格納されています