DXライブラリ 総合スレッド その16
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2013/06/30(日) 23:57:05.06ID:j62MvD3e「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。
【公式】
http://homepage2.nifty.com/natupaji/DxLib/
【関連スレ】
C/C++ゲーム製作総合スレッド Part1
http://toro.2ch.net/test/read.cgi/gamedev/1337516528/
ゲームプログラムなら俺に聞け(プログラム技術板)
http://toro.2ch.net/test/read.cgi/tech/1366526476/
●DXライブラリではなくDirectXの質問ならこっちへ
【C++】DirectX初心者質問スレ【C】(プログラム技術板)
http://toro.2ch.net/test/read.cgi/tech/1370015791/
0619名前は開発中のものです。
2013/10/21(月) 20:08:41.83ID:/u23XyM9そんな単純なもんじゃないから、フレーム固定で作っておけ
0620名前は開発中のものです。
2013/10/21(月) 20:11:54.34ID:1CRFZwZlそれが、個別に全部が違う挙動をする。
0621名前は開発中のものです。
2013/10/21(月) 20:14:02.72ID:w8555t4z↓
http://dixq.net/g/03_14.html
0622名前は開発中のものです。
2013/10/21(月) 20:19:16.36ID:/u23XyM9ズレるわ
0623名前は開発中のものです。
2013/10/21(月) 20:23:20.98ID:sMEbtuV5そのサイトは初心者向けだから可変フレームレートは難しい
また、その章までに書いたプログラムすべてを変更する必要がでるから避けてるんだよ
>>608にも書いたけど時間を計って可変フレームレートにするのは良いことだよ
一応処理落ちについての話題が出たから例として触れておくと、
極端な処理落ちが発生したときに可変フレームレートだと衝突判定のすり抜けが起こることが
予期されるからそれを防止するためのメカニズムを考えないといけなかったりとか
とにかくプログラム書くのがFPS固定に比べて面倒くさい
0624名前は開発中のものです。
2013/10/21(月) 20:27:42.27ID:r1lqBEdn1フレーム毎に画面が白黒⇔カラーを繰り返すみたいなエフェクトを実装するとき
可変フレームレートだと白黒のままになったりカラーのままになったりで
おかしな表示になるんじゃないんですか
0625名前は開発中のものです。
2013/10/21(月) 20:27:43.27ID:/u23XyM9カーブとか重力を考慮した移動とか複雑な移動処理をするなら
完全な再現性を実現できない限りは可変フレームレートなんて採用すべきじゃないと思うな
ネトゲやFPSだって、発生した事実関係だけをサーバに送信して無理矢理辻褄合わせてるだけだし
0626名前は開発中のものです。
2013/10/21(月) 20:30:11.95ID:w8555t4z↓
予め1フレーム過ぎる毎にint countを+1しておく
↓
あるアクションから一秒たったら画像を表示させたいから
アクションおこした時にint a = countする
↓
count - a > 60の時に画像を表示
みたいな説明があって
countの代わりにGetNowCount()を使えばfps固定する必要なんてないと思ったと言おうとしました
説明下手でごめんなさい
>>623-625
なるほど
まだそんなレベルに達していなかったので面倒くさいとも思いませんでした
ありがとうございました
0627名前は開発中のものです。
2013/10/22(火) 00:35:28.42ID:p3Db7vmq微分方程式を解ける秀才がこのスレに降臨したかと期待したが、ただの初心者だった
0628名前は開発中のものです。
2013/10/22(火) 03:54:29.71ID:o/EMSDRGああ、それは勘違いしそうになるな。説明が不適切とまでは言わないが。
1秒後(あるいは60フレーム後)に画像を表示する、くらいなら正直どっちでもいいと思うけど、
秒速120ドットで移動するとかだと少し面倒になるって感じかねぇ。分母が変わっちゃうから。
0629名前は開発中のものです。
2013/10/22(火) 04:28:57.73ID:o/EMSDRGゲーム内時間をフレーム基準で考えるか、実時間ベースにするかって問題だよね。
フレーム基準というのは、つまりゲーム内時間をプログラマが管理できる状態と言い換えられる。
それに対して、実時間を基準に処理を行うというのは、ゲーム内時間にプログラマがアクセス出来ない状態と言える。
この差は結構重要で、プログラミングをする際に1つの処理を細かく積み上げて考えたい時や、
あるいはテストプレイやデバッグの際に、ゲームスピードをゆっくりにして動作を見極めたいという時に、
実時間ベースだと不便そうだなあというのは、何となく分かってくれるんじゃないかと思う。
もちろん実時間ベースが優れてるところもあるので、決して間違いではないのだけれど。
0630名前は開発中のものです。
2013/10/22(火) 06:42:35.27ID:ExrKC0WT1秒を60フレームって前提でゲーム内のタイマー作っちまってるわ
0631名前は開発中のものです。
2013/10/22(火) 06:52:51.98ID:o/EMSDRG0632名前は開発中のものです。
2013/10/22(火) 07:32:13.52ID:h2dd5GhR環境によってfps変わってたらリプレイの再現できなくない?
0633名前は開発中のものです。
2013/10/22(火) 08:42:21.30ID:V7djTReU動きが荒くなるだけじゃない?
0634名前は開発中のものです。
2013/10/22(火) 08:54:17.54ID:BGWyzjBWと思ったけど処理したときついでに時間記録すれば普通にできるか
0635名前は開発中のものです。
2013/10/22(火) 09:32:38.97ID:a95zJsvM0636名前は開発中のものです。
2013/10/22(火) 09:45:09.67ID:aNv/ean10637名前は開発中のものです。
2013/10/22(火) 11:17:27.80ID:uNccePouずれ誤差怖いから実体の位置を入力時間ごとに別で取っておいてそこから計算させた方がいいかも?
使う処理が1つで済む&信頼度高いけど情報量が膨れそう
とか妄想したけどジャンル的にリアルタイムリプレイなんて一生実装しないだろうな
0638名前は開発中のものです。
2013/10/22(火) 12:36:20.41ID:RkpLyTH20639名前は開発中のものです。
2013/10/22(火) 12:47:39.37ID:R7mUWhnr0640名前は開発中のものです。
2013/10/22(火) 15:20:36.48ID:o/EMSDRG0641名前は開発中のものです。
2013/10/22(火) 15:31:37.39ID:02IR7DMm俺のように高レベルな人間になると議論する相手を探すのも苦労する
0642名前は開発中のものです。
2013/10/22(火) 15:55:43.08ID:RkpLyTH20643名前は開発中のものです。
2013/10/22(火) 16:25:11.43ID:aNv/ean1多分ツッコミ待ちなんだろうけど、どこへツッコめばいいのかわからんw
0644名前は開発中のものです。
2013/10/22(火) 16:30:05.22ID:IVeWUgqF0645名前は開発中のものです。
2013/10/22(火) 18:58:55.59ID:Fwxh/sRV他のdxlibを使ったゲームはウィンドウの方が不安定だったりするのになぜでしょうか…
2D表示機能のみで、主な設定関数は
SetGraphMode(800,600,16)
SetDrawScreen(裏画面)
SetDrawMode(バイリニア)//ゲーム中変更なし
処理としては、描画に加算・減算切り替えが多め、背景の計算がやや複雑といった感じです
全画面モード中はこの処理が重い、といったことはあるのでしょうか?
0646名前は開発中のものです。
2013/10/22(火) 20:35:42.51ID:IVeWUgqF0647名前は開発中のものです。
2013/10/22(火) 22:01:05.96ID:o/EMSDRG解像度を変えるのではなくウィンドウサイズを上げてるとか…… うーん、わからん
0648名前は開発中のものです。
2013/10/22(火) 22:30:32.24ID:smR91Eyn音楽に合わせた演出がゲーム最初にあるのですが確実にずれていました
デバックビルドで計測しましたが、ウィンドウだと13ms、全画面だと17msでした
screenflipで差が出るようです
0649名前は開発中のものです。
2013/10/22(火) 22:31:54.83ID:o/EMSDRG0650649
2013/10/22(火) 22:34:58.08ID:o/EMSDRGたぶん、モニタ&グラボのリフレッシュレートが75Hz(≒13ms)になってるんじゃないか?
で、フルスクリーンにするときに、プログラム側で60Hz(≒17ms)に設定しているんだと思う
0651名前は開発中のものです。
2013/10/22(火) 23:04:05.07ID:CMYREC7cでは全画面モードが遅いのではなくウィンドウモードが若干早送りされてるということですか!
これを抑えて調整し直します。ありがとうございました!
0652名前は開発中のものです。
2013/10/22(火) 23:07:27.52ID:IeNmWB2w0653名前は開発中のものです。
2013/10/22(火) 23:29:28.48ID:56sEfdt6常にCPU負荷とFPSぐらいは見れるようにしとかないと・・・
0654名前は開発中のものです。
2013/10/23(水) 01:24:23.81ID:mBIdYewB手元に60Hz以外に対応してるモニタが無いから、ホントにそれで合ってるのか分からん。
>>653
CPU負荷は表示させたこと無いなあ。Win32APIあたりから拾ってくるのん?
0655名前は開発中のものです。
2013/10/23(水) 02:00:20.55ID:/vNRk1Xr垂直同期しないならWaitTimerが都合よく動くことを祈る
0656名前は開発中のものです。
2013/10/23(水) 03:47:45.96ID:0wrZIgXb単純にwait処理以外の時間を1秒間ms単位で足して1000で割る
で良いんじゃね
垂直同期待ちしてる場合はScreenFlipもwait処理として考える
0657名前は開発中のものです。
2013/10/23(水) 17:08:21.68ID:mBIdYewBただ、手元に60Hz以外の環境で確認するすべがないのと、
もしかすると、もうちょっとスマートな方法があるのかな?と、ちょっと気になっただけなんだ。
まあ、タイマー制御もvsync待ちも切ると500FPSとかで動いたりするから、大丈夫だろうとは思うんだけどさ。
デフォルトはタイマー制御にしておいて、コンフィグ画面なり起動時のダイアログなりで変えれるようにするのがベストかな?
0658名前は開発中のものです。
2013/10/23(水) 17:14:46.11ID:r7PHrsPz0659名前は開発中のものです。
2013/10/23(水) 20:42:08.44ID:FRuG4Mt00660名前は開発中のものです。
2013/10/25(金) 11:35:42.34ID:5OBeL3FY例えばモニタが60fpsだったら、描画スレッドを60fps(vsync?)にして、
処理スレッドと描画スレッドはどうやって同期するんだ?
処理スレッドが座標いじってる時に描画スレッドが座標見るのはダメなんだよな?
まぁ早々ブッキングはしないだろうけど何万回転とかしたら・・・
0661名前は開発中のものです。
2013/10/25(金) 16:06:37.29ID:4mKf6ch/それは一旦fpsとかその他の言葉を忘れて、マルチスレッドでの同期処理を書いて理解した方がいい。
てか、ドライバ書いてる訳でも無いのに垂直帰線期間の話が出て来る事自体が、あんまりリアルじゃない。
30年前の8bitマシンならともかく、今のマシンでアプリレイヤの話ならばちょっと変だ。
垂直帰線期間の考慮が必要になるのは、例えばDirectXやOpenGLそのものがその中で行っている最後のラスタ情報のVRAMへの転送処理の中の話であって、
普通は(アプリケーションプログラマは)メインループの経過時間差を見てfpsをコントロールする。
具体的には一定経過時間未満の場合に処理をスキップさせる。
もしもこの周辺処理をマルチスレッドで実装したい場合に、意図的な同期処理が必要になるが、そういった場合にマルチスレッドでの流儀で実装する。
そうでないなら単にメインループの中で、普通に処理するだけ。
こういった話はより具体的にしないと、ただの曖昧な聞きかじりみたいな話で終わってしまい、全然役に立たない。
経験から引き出して実例として話さないとダメ。
0662名前は開発中のものです。
2013/10/25(金) 16:51:42.23ID:4Ad/OwJF0663名前は開発中のものです。
2013/10/25(金) 17:31:09.74ID:L0JBOh2J0664名前は開発中のものです。
2013/10/25(金) 21:13:51.48ID:eOV2PGNk0665名前は開発中のものです。
2013/10/25(金) 21:16:54.66ID:L0JBOh2J0666名前は開発中のものです。
2013/10/25(金) 21:32:50.74ID:W9GSrEjC0667名前は開発中のものです。
2013/10/25(金) 21:59:31.35ID:Wzto7AEP誤爆か?
0668名前は開発中のものです。
2013/10/25(金) 22:47:27.21ID:8QrcaZYH0669名前は開発中のものです。
2013/10/26(土) 05:38:35.50ID:EY53Gq9Jマップスクロールを「キャラを中心にスクロール」、
「画面端はキャラだけ移動」という一般的な方法を
採用していますが、画像がブレだかボヤケだかの描画に
なってしまいます。
・キャラを中心にスクロールしているときは、背景のマップが
ぶれる(ぼやける)
・画面端でキャラだけ動いているときは、キャラが
ぶれる(ぼやける)
スクロール方法は下記サイトの方法で実装しています。
aidiary.hatenablog.com/entry/20050624/1255786339
スクロール中にキャラやマップのぶれを少なくする方法は
何かないでしょうか。
0670名前は開発中のものです。
2013/10/26(土) 05:50:55.66ID:6XzQgQShスクロール方法関係ないんじゃない?
0671名前は開発中のものです。
2013/10/26(土) 05:58:59.74ID:EY53Gq9Jブラウザとかでも高速でスクロールさせると文字や画像が
残像する、あのような感じです。
<キャラを中心にスクロール中>
マップに残像が発生しますが、キャラはくっきり描画
されます(アニメーションしてても)。
<画面端でキャラだけ移動しているとき>
マップはくっきり描画されますが、移動中のキャラは
常に残像が発生します。
※参考にしたサイトのサンプルプログラムでも
同様の残像が発生します。
0672名前は開発中のものです。
2013/10/26(土) 06:08:55.30ID:6XzQgQSh0673名前は開発中のものです。
2013/10/26(土) 07:26:17.12ID:6YbVuCZu0674名前は開発中のものです。
2013/10/26(土) 08:51:17.35ID:/uNZ0zLg0675名前は開発中のものです。
2013/10/26(土) 08:56:23.71ID:Q2EqAaLNこれを実行で俺もなった
0676名前は開発中のものです。
2013/10/26(土) 11:49:37.99ID:pP8Y9uuyURLの先見てないけど、普通に真っ先に思い付くのはダブルバッファリングしてるかどうかだと思う。
で、多分してないんだと思う。それだけの事かなと
0677名前は開発中のものです。
2013/10/26(土) 11:53:21.66ID:yQ4RNrvp最後にそのバッファを画面へ送る。
真っ先にその話が出るべき
0678名前は開発中のものです。
2013/10/26(土) 13:57:28.53ID:J0WOOfsS撮ったスクリーンショットがおかしかったらゲームが悪い
だがこの場合、多分モニタの残像だろう
PSPのゲームとかでも残像起こってるだろ? ショボイモニタだとドットの色切り替えが遅くてモヤっとした残像が残る
液晶モニタ使ってるならそれが正常な状態だからそのままでいい
自分のテスト環境で発生するのが嫌なら、CRTモニタか、性能のいい液晶モニタを買うしかない
もしくは、作ってるゲームが30fpsだったなら60fpsで組めば多少はマシになる
0679名前は開発中のものです。
2013/10/26(土) 14:17:59.04ID:6eucTLth別におかしくない
環境かな
0680名前は開発中のものです。
2013/10/26(土) 14:26:43.92ID:VAjnFKN9環境だね
0681名前は開発中のものです。
2013/10/26(土) 14:28:35.26ID:j2hwvwUg相当クソなブラウザを特別に使ってなければ環境
0682名前は開発中のものです。
2013/10/26(土) 14:55:49.27ID:6eucTLth0683名前は開発中のものです。
2013/10/26(土) 15:26:34.20ID:vOP7JN2Phttp://toro.2ch.net/test/read.cgi/gamedev/1361004297/800-807
マルチポストじゃなくて、第三者による転載だってさ。
DXライブラリの質問とは限らないし、回答するなら本人が居る向こうの方が良いと思う
0684名前は開発中のものです。
2013/10/26(土) 15:49:34.04ID:J0WOOfsS0685名前は開発中のものです。
2013/10/27(日) 03:55:14.21ID:hVtutQ/3教えてGooの擬人化みたいな奴だな…
0686名前は開発中のものです。
2013/10/27(日) 18:32:26.43ID:ZqajIEUd修正してたら一日終わった・・・
0687名前は開発中のものです。
2013/10/27(日) 18:40:59.76ID:lWMy8q7c0688名前は開発中のものです。
2013/10/27(日) 19:07:38.88ID:J4caiA240689名前は開発中のものです。
2013/10/27(日) 20:36:50.19ID:ky3lixuM0690名前は開発中のものです。
2013/10/27(日) 20:49:33.81ID:o0p58kLo0691名前は開発中のものです。
2013/10/27(日) 21:02:15.67ID:XS+5Iaz00692名前は開発中のものです。
2013/10/28(月) 08:27:44.01ID:POAr7U/I0693名前は開発中のものです。
2013/10/30(水) 14:41:44.02ID:sYdTMpzXそんなに糞だと思うならNetBeansなり
IntelliJなり好きなの使えばいいのに
0694名前は開発中のものです。
2013/10/30(水) 16:10:35.70ID:28s19Yxa0695名前は開発中のものです。
2013/10/31(木) 12:48:09.17ID:cHiDnG2c0696名前は開発中のものです。
2013/10/31(木) 14:46:32.33ID:kR/JAw790697名前は開発中のものです。
2013/10/31(木) 15:29:36.47ID:p29pq3vL0698名前は開発中のものです。
2013/11/01(金) 17:22:12.94ID:O2gJuo4d0699名前は開発中のものです。
2013/11/01(金) 17:43:40.29ID:19pXpteF0700名前は開発中のものです。
2013/11/01(金) 17:56:15.00ID:/fYKLVaQ0701名前は開発中のものです。
2013/11/02(土) 03:30:34.86ID:Ut0q1ayZ0702名前は開発中のものです。
2013/11/02(土) 03:36:17.73ID:x2D2oiTV0703名前は開発中のものです。
2013/11/02(土) 08:09:56.90ID:3+cyVteEどうしたらいいですか?
mv1ファイルを読み込み
座標・回転の設定・更新
描画リストへ登録
描画リストが各クラスへ描画する関数を呼び出し
描画リストを初期化
最初に戻る
これら一連の流れで値に異常が見つかりません
エスパーいたらお願いします
0704名前は開発中のものです。
2013/11/02(土) 13:37:22.37ID:BsNpZj+/スケールの初期値がおかしかったり
0705名前は開発中のものです。
2013/11/02(土) 14:08:55.57ID:WffMO7pj・次に、あるとした、それらを単に「おまじないで出来た」じゃなく意味わかっててやれたのか
・次にカメラの位置や角度とモデルの位置はあってるか
・次にシェーダ使ってる場合、シェーダ内のエラーちゃんと拾ってるか。計算は合ってるのか
・使ってないとしてマテリアルやライトはどうなってるか
確認点いくらでも出てくる
0706名前は開発中のものです。
2013/11/02(土) 14:16:54.20ID:zb+/V8x50707名前は開発中のものです。
2013/11/02(土) 20:26:00.39ID:n5KzCdEvhttp://c-games.main.jp/ckaihatu/ckaihatu8.html
良かったらこれをご覧ください
上記の解説サイトを運営している者ですが
お役に立てれば光栄です
0708名前は開発中のものです。
2013/11/02(土) 20:29:07.13ID:yqJ8dEIi騙されんなよ
0709名前は開発中のものです。
2013/11/02(土) 20:37:43.45ID:9FYWUI/Yちゃんとコテハン付けてくれるとなお良し
0710名前は開発中のものです。
2013/11/02(土) 21:09:13.15ID:mpR3CYfzお前らちゃんと使いこなしてる?
0711名前は開発中のものです。
2013/11/02(土) 21:35:26.14ID:SySW2qwHerror C2064: 0 引数を取り込む関数には評価されません。
とエラーがでます。どうしたらいいですか?
struct{
string AI_NAME;
void (CNonPlayer::*AI_Func)();//AIの関数ポインタ
}AIList[6];
int UseAI;
//使う時
AIList[UseAI].AI_Func();
ちなみに関数ポインタはコンストラクタで
AIList[0].AI_NAME="Idle";
AIList[0].AI_Func=&CNonPlayer::AI_Idle;
みたいに初期化しています。AI_Idleみたいなメンバ関数が6個あります。(要素数)
0712名前は開発中のものです。
2013/11/02(土) 21:40:49.23ID:O018gqUy0713名前は開発中のものです。
2013/11/02(土) 21:42:40.26ID:3Maelvih0714名前は開発中のものです。
2013/11/02(土) 21:59:51.69ID:SySW2qwHおぉ・・・
(this->*AIList[UseAI].AI_Func)();
こんなんにしたらできました
ありがとうございます
>>712
ナマポ?スマートポインタじゃないと設計としてまずいですか?
0715名前は開発中のものです。
2013/11/02(土) 22:02:12.55ID:9FYWUI/Y0716名前は開発中のものです。
2013/11/03(日) 00:55:04.58ID:W4L0bxGv0717名前は開発中のものです。
2013/11/03(日) 03:40:26.61ID:tMrWUay8関数ポインタの指してる先が普通のメンバ関数みたいだし
このケースではスマートポインタにする意義は無いと思う
似たようなことを敢えて言うとすれば「std::function使おう」とか言えるけど
0718名前は開発中のものです。
2013/11/03(日) 08:21:38.75ID:vvC2nxd0http://pona.m-bird.org/d-bbs/2-watch/
■ このスレッドは過去ログ倉庫に格納されています