- 1 名前:名前は開発中のものです。 mailto:sage [2016/01/05(火) 23:44:29.77 ID:fkNSYSkc.net]
- Cを習得した程度のスキルでも、ゲームのグラフィックを比較的容易に描画する事のできる、
「DXライブラリ」に関するスレッドです。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。 【公式】 homepage2.nifty.com/natupaji/DxLib/ 【関連スレ】 C/C++ゲーム製作総合スレッド Part7 [転載禁止](c)2ch.net peace.2ch.net/test/read.cgi/gamedev/1420939171/ ゲームプログラムなら俺に聞け32(c)2ch.net peace.2ch.net/test/read.cgi/tech/1441693570/ ●DXライブラリではなくDirectXの質問ならこっちへ 【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止](c)2ch.net peace.2ch.net/test/read.cgi/tech/1418438785/
- 2 名前:名前は開発中のものです。 mailto:sage [2016/01/05(火) 23:46:42.08 ID:fkNSYSkc.net]
- 【前スレ】
DXライブラリ 総合スレッド その18 peace.2ch.net/test/read.cgi/gamedev/1399459468/ 【過去スレ】 01 pc11.2ch.net/test/read.cgi/gamedev/1197468399/ 02 pc11.2ch.net/test/read.cgi/gamedev/1224923873/ 03 pc11.2ch.net/test/read.cgi/gamedev/1238429676/ 04 pc11.2ch.net/test/read.cgi/gamedev/1249822550/ 05 pc11.2ch.net/test/read.cgi/gamedev/1259912953/ 06 hibari.2ch.net/test/read.cgi/gamedev/1267108154/ 07 hibari.2ch.net/test/read.cgi/gamedev/1286180687/ 08 hibari.2ch.net/test/read.cgi/gamedev/1301818631/ 09 hibari.2ch.net/test/read.cgi/gamedev/1310904069/ 10 hibari.2ch.net/test/read.cgi/gamedev/1313655495/ 11 toro.2ch.net/test/read.cgi/gamedev/1322844235/ 12 toro.2ch.net/test/read.cgi/gamedev/1330000532/ 13 toro.2ch.net/test/read.cgi/gamedev/1339368894/ 14 toro.2ch.net/test/read.cgi/gamedev/1350618178/ 15 toro.2ch.net/test/read.cgi/gamedev/1364900066/ 16 toro.2ch.net/test/read.cgi/gamedev/1372604225/ 17 toro.2ch.net/test/read.cgi/gamedev/1383795645/
- 3 名前:名前は開発中のものです。 mailto:sage [2016/01/06(水) 02:07:33.23 ID:bl/881x8.net]
- 埋め
- 4 名前:名前は開発中のものです。 [2016/01/06(水) 04:35:21.79 ID:vkTt7kSt.net]
- DirectXを利用したゲーム開発のためのライブラリ「DXライブラリ」に脆弱性 - 窓の杜
www.forest.impress.co.jp/
- 5 名前:docs/news/20160105_737584.html []
- [ここ壊れてます]
- 6 名前:名前は開発中のものです。 mailto:sage [2016/01/06(水) 09:50:52.12 ID:uUHWeNkD.net]
- すれたておつ〜
- 7 名前:名前は開発中のものです。 mailto:sage [2016/01/06(水) 13:49:00.22 ID:vToozi2l.net]
- 即死回避
- 8 名前:名前は開発中のものです。 mailto:sage [2016/01/06(水) 21:48:53.47 ID:FPsnS4s5.net]
- リスポーンキル回避
- 9 名前:名前は開発中のものです。 mailto:sage [2016/01/06(水) 22:07:03.62 ID:SNpTpPa+.net]
- char binadata[10000000]ってやったらエラーが出た
char binadata[9000000]だったら大丈夫だった char binadata[10000000]でもグローバル変数だったら大丈夫だった なんでグローバル変数だと大丈夫なん? 使うメモリの容量がローカル変数とグローバル変数では違うの?
- 10 名前:名前は開発中のものです。 mailto:sage [2016/01/06(水) 22:27:40.57 ID:D/YIuxFU.net]
- ローカルメモリはスタックメモリに配置されるからって
大学でならわなかったかい?
- 11 名前:名前は開発中のものです。 mailto:sage [2016/01/06(水) 23:21:49.75 ID:SNpTpPa+.net]
- はい、ならいませんでした
- 12 名前:名前は開発中のものです。 mailto:sage [2016/01/07(木) 10:01:18.70 ID:Fegao3sZ.net]
- エラーってstack overflow?
初歩的すぎる
- 13 名前:名前は開発中のものです。 mailto:sage [2016/01/12(火) 13:01:35.36 ID:edPYChEu.net]
- 記憶域でのスタックと静的領域とヒープの3つを理解し
適切に使い分けられなければ 蹴り入れられても文句言えない C言語入門からやり直すべきよ
- 14 名前:名前は開発中のものです。 mailto:sage [2016/01/24(日) 15:52:14.74 ID:YuKcV9Os.net]
- やり直すというより、>>8は現在進行形のC入門者なんだと思う
- 15 名前:名前は開発中のものです。 mailto:sage [2016/01/25(月) 17:48:18.36 ID:sajU6FWk.net]
- ttfファイルを読み込んで使ってるんだけど、あらかじめ同じフォントがインストールされているとサイズがおかしくなる
どうにかならない?
- 16 名前:名前は開発中のものです。 mailto:sage [2016/01/25(月) 20:30:11.84 ID:sajU6FWk.net]
- LoadFontDataToHandle関数で解決しました
- 17 名前:名前は開発中のものです。 mailto:sage [2016/02/18(木) 16:31:02.58 ID:hWOqPyim.net]
- 今更だけどこれって
「ディーエックスライブラリ」? 「デラックスライブラリ」? 前者で読んでるけどどっちなんだ
- 18 名前:名前は開発中のものです。 mailto:sage [2016/02/18(木) 18:15:07.43 ID:CD7aF1NM.net]
- もともと DirectX のDXだからディーエックスでいいんじゃない
- 19 名前:名前は開発中のものです。 mailto:sage [2016/02/18(木) 19:31:57.04 ID:qySKf0j4.net]
- ここで聞いていいのか分かりませんが
14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2013編のP105に もし複数のキーが同時に押された場合、GetJoypadInputState関数は押されたキーを表す定 数を合計した数値を返します。たとえば←と↑が同時に押された場合、PAD_INPUT_LEFT(実 体は整数の2)とPAD_INPUT_UP(整数の8)の合計(つまり 10 )が返さます。キーを表す定数 には2進数で表すとビットが重ならない数値が割り当てられているので、合計してもキーを表す ビットの状態は変わりません。 ←↑の同時押し ↑→の同時押し 0000 0010(2) 0000 1000(8) +0000 1000(8) +0000 0100(4) ──────── ──────── 0000 1010(10) 0000 1100(12) とあるんですが、テンキーって 789 456 123 だから ↑8 ←4 →6 ↓2 になって、←↑の同時押し:4+8=12、 ↑→の同時押し:8+6=14だと思うんですが、DXライブラリでは ↑8 ←2 →4 ↓6 になるんでしょうか?
- 20 名前:名前は開発中のものです。 mailto:sage [2016/02/18(木) 20:15:38.26 ID:pY1Vnnd1.net]
- >>18
多分その書籍は「同時押ししても別々に認識できる」 というのを示したかっただけな感じがするので 実際の割当がどうなっているのかはあまり気にしなくていいと思います あと、テンキーの数字と割当整数がそのまま対応しているわけではないです
- 21 名前:名前は開発中のものです。 mailto:sage [2016/02/18(木) 21:30:32.21 ID:w6GurFPy.net]
- その数字のままだったら、2+4と6単体と区別つかないだろう
2進数慣れといたほうがいいよ
- 22 名前:名前は開発中のものです。 mailto:sage [2016/02/18(木) 22:26:00.43 ID:qySKf0j4.net]
- 皆さんありがとう
この部分の前後読んでもさっぱり分からないので これ以上気にしないで先に進むことにします この先具体例が出て来るかも知れませんしね
- 23 名前:名前は開発中のものです。 mailto:sage [2016/02/19(金) 07:22:42.85 ID:g+RjjMNz.net]
- ビット演算調べて。
一桁目が1 0001 1x1=1 二桁目が1 0010 1x2+0=2 三桁目が1 0100 1x2x2+0x2+0=4 四桁目が1 1000 1x2x2x2+0x2x2+0x2+0=8 2になると一桁上がるから2進数。 普通の10進数も、例えば、1234は =1x10x10x10+2x10x10+3x10+4 一つのキーが押されているか押されていないかを表現するのには0と1で充分。 つまりキーが4つなら0000から1111で表現できる。 キーの組み合わせはビットのor演算になる。 2進数だから足し算と結果は同じになるけど。 逆に一つのキーの状態を調べるのはandで。
- 24 名前:名前は開発中のものです。 mailto:sage [2016/02/19(金) 17:10:56.60 ID:yVHYDmTr.net]
- こうして見てると、ビット演算を他人に教えるって結構大変そうだな
- 25 名前:名前は開発中のものです。 mailto:sage [2016/02/19(金) 20:45:32.62 ID:9rsuXZwb.net]
- ビット演算の話なのか?
俺はてっきり if( GetJoypadInputState( DX_INPUT_PAD1 ) & PAD_INPUT_UP ) みたいに識別子と論理積を使って判定するのではなく if( GetJoypadInputState( DX_INPUT_PAD1 ) == 8 ) みたいにその数字で直接入力判定してるから、テンキーの割り当て整数を知りたい っていう話をしているのかと思ったんだけど
- 26 名前:名前は開発中のものです。 mailto:sage [2016/02/20(土) 10:04:02.81 ID:EkX5eIPD.net]
- わざわざそんなことするメリットなくね?
- 27 名前:名前は開発中のものです。 mailto:sage [2016/02/21(日) 02:51:09.47 ID:M/Be+VbG.net]
- とりあえず、入力状態を調べる関数の返り値を2進表記文字列と10進表記文字列で対にして画面左上に表示するだけの簡単なアプリ作っても良いかと思う。
と、ここで気になって調べたら、2進文字列への変換は Cはitoa←VCでしか使えない? 今回は使えるかな C++はstd::bitset 簡単なはずなのに、簡単でない気がしてきた。 用途限定なら自作した方が楽な(学べる)気もする。
- 28 名前:名前は開発中のものです。 mailto:sage [2016/02/21(日) 04:47:37.86 ID:M/Be+VbG.net]
- >if( GetJoypadInputState( DX_INPUT_PAD1 ) & PAD_INPUT_UP )
&(and)だから特定の一つのキーが、押されているかのチェック 押されていなければ0、つまり偽 FALSEになりif以降は実行されない。 押されていれば0以外 真となりifは実行される。 if ((GetJoypadInputState(DX_INPUT_PAD1)&PAD_INPUT_UP) !=0) これが省略されているのが一行目。 0であるならば、0以外であるならば、機械は基本たったこれ2つの判断で分岐する。!=0は0でないなら、の意味。not イコール 0 while(1)とかも同じ
- 29 名前:lえ方。これは条件が常に真(偽(0)ではない)なので無限ループになる。
for(初期化(が多い);継続の条件;条件が真なら行うこと) いずれ条件が偽になるからこそ使えるということ。 >if( GetJoypadInputState( DX_INPUT_PAD1 ) == 8 ) というかね、それならまだ if(GetJoypadInputState(DX_INPUT_PAD1)==(PAD_INPUT_UP|PAD_INPUT_LEFT)) こういう例をあげてくれたほうが嬉しかったかな。 |を+にかえても思ったとおりに動作はするかも知れないが、それではいけないということ。 [] - [ここ壊れてます]
- 30 名前:名前は開発中のものです。 mailto:sage [2016/02/21(日) 05:53:09.79 ID:M/Be+VbG.net]
- if(GetJoypadInputState(DX_INPUT_PAD1)&(PAD_INPUT_UP|PAD_INPUT_LEFT))
にしないと使えないね。 寝ます。
- 31 名前:名前は開発中のものです。 mailto:sage [2016/02/21(日) 06:01:12.59 ID:M/Be+VbG.net]
- ごめんこれも使えなかった。
同時に押された判定はすこし長くなるな。 このままではどちらか片方押さた場合でも、、、 眠い。ほんと寝ます。
- 32 名前:名前は開発中のものです。 mailto:sage [2016/02/21(日) 08:09:43.06 ID:M/Be+VbG.net]
- if(GetJoypadInputState(DX_INPUT_PAD1)&(PAD_INPUT_UP|PAD_INPUT_LEFT)==(PAD_INPUT_UP|PAD_INPUT_LEFT))
一つのキーチェックは!=0でいいけど ボタン1|ボタン2|ボタン3 とか複数キーが押されているかのチェックの場合は駄目ですね。一つのキーが押されただけでも!=0を満たしてしまうから。 連投すいません。そして初級者以外の方、失礼しました。
- 33 名前:名前は開発中のものです。 mailto:sage [2016/02/21(日) 08:25:35.10 ID:M/Be+VbG.net]
- if((GetJoypadInputState(DX_INPUT_PAD1)&(PAD_INPUT_UP|PAD_INPUT_LEFT))==(PAD_INPUT_UP|PAD_INPUT_LEFT))
すいません。もう一度だけ。 c 演算子 優先順位 で検索してください。 確か&(アドレスじゃない方)は==よりあとに評価された気がする。これはCの欠陥ではないのかとか書いてた書籍があった気がする。 不安だし、()はつけといたほうが良いと思う。
- 34 名前:24 mailto:sage [2016/02/21(日) 09:00:22.20 ID:Va9zPPiV.net]
- なぜ俺が適当に上げた例に対して
何レスにも渡って解りづらい解説をしているのだ・・・ というか肝心の>>18はもう居ないっぽいから 質問したかった内容自体がそこで合ってるのかわからんぞ
- 35 名前:名前は開発中のものです。 mailto:sage [2016/02/21(日) 09:24:49.20 ID:M/Be+VbG.net]
- これでも簡単に書こうとしたのですけどね。
どの辺がわかりづらいですか? 簡単なことを簡単に書くのは難しいですね。
- 36 名前:名前は開発中のものです。 mailto:sage [2016/02/21(日) 10:04:32.36 ID:Va9zPPiV.net]
- >>33
説明が長くなるほど要点をつかみづらくなるから 補足は少なく、説明の訂正は出ないようにして、 大事な部分だけ短く簡単に説明した方が初心者には理解しやすい 補足とかは質問者に求められたときだけ説明すればいいかと
- 37 名前:名前は開発中のものです。 mailto:sage [2016/02/21(日) 11:11:53.47 ID:M/Be+VbG.net]
- >>34
了解です。
- 38 名前:名前は開発中のものです。 mailto:sage [2016/02/29(月) 21:14:11.05 ID:QBvMTSC4.net]
- DXLibは初心者向けって聞くけど、シャープDXなどと何が違うの?
2Dゲームの場合。3Dなら素直にUnity使うし
- 39 名前:名前は開発中のものです。 mailto:sage [2016/02/29(月) 23:23:38.33 ID:leqKH6jq.net]
- シャープDXってなんぞ。
初心者にオススメの1つではあるが、これで作られた市販ゲームもあるくらいには幅広いよ
- 40 名前:名前は開発中のものです。 mailto:sage [2016/03/01(火) 05:56:45.53 ID:+UwmpDoJ.net]
- C言語で書きたくてwindowsAPI、グラフィックAPI触りたくない人向け
- 41 名前:名前は開発中のものです。 mailto:sage [2016/03/01(火) 15:06:45.22 ID:YBHnpXlS.net]
- 確かにC++ぽく作られてないのは嬉しい。
他の人のソースコードとかが解読しやすい。
- 42 名前:名前は開発中のものです。 mailto:sage [2016/03/02(水) 02:56:18.34 ID:ObT9YhJL.net]
- 俺もライブラリ作ってやるぜ!と意気込んで、
グラフィックと入力と音周りが出来たあたりで、DXライブラリで良いんじゃね?と気づいて戻ってくる感じ
- 43 名前:名前は開発中のものです。 mailto:sage [2016/03/10(木) 14:06:18.95 ID:hKSGgP4O.net]
- キャラクターIDをソートする場合なんですけど
こういう場合はやっぱりバケットソート的なアルゴリズムが最速なのでしょうか? 条件 ・10000体のキャラクターがいる(ID0〜ID9999)※ID0番は空欄扱いの時に使うので実質9999体 ・それぞれのキャラクターはスコアを持ってる(とりうる値はunsigned charの0〜255) ・ソートする時はスコアの低い順に並べる ・スコアが同点ならIDが若い順に並べる 自作した処理の概要 int baketu[10000*256]; int kekka[10000]; まず配列baketu[]を0クリアして for(int ID=1;ID<10000;ID++){ baketu[(IDのスコア*10000)+ID] = ID; } int x=0;int i=0; while(x<9999){ if(baketu[i]>0){kekka[x]=baketu[i];x++;} i++; } こんな感じです int baketu[10000*256] ←なんかこれで10メガくらい使うみたいですし もっとスマートなやり方は無いものでしょうか? ただ、かなり頻繁に呼ぶ処理なので最優先したいのは速度です
- 44 名前:名前は開発中のものです。 mailto:sage [2016/03/10(木) 14:23:40.45 ID:chbXq+m7.net]
- 普通にクイックソートでいいのでは
ソート時間の比較 www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/speed-compare.html
- 45 名前:名前は開発中のものです。 mailto:sage [2016/03/10(木) 14:44:23.96 ID:w2U+RHTk.net]
- そもそも頻繁に呼び出すなら
いちいちソートしないでソート結果をずっと保持する。 オブジェクトの追加削除が頻繁なら、 ソートではなく、正しい位置に差し込むようにする。
- 46 名前:名前は開発中のものです。 mailto:sage [2016/03/10(木) 14:44:30.14 ID:HzV85MQu.net]
- RPGなどのスクロールゲーは、描画可能画像(マップサイズ)を作ってそこに描画した後に、ウィンドウに描画すればいいのですか?
速度やメモリを考えると、やめた方がいいですかね
- 47 名前:名前は開発中のものです。 mailto:sage [2016/03/10(木) 15:25:16.50 ID:hKSGgP4O.net]
- >>43
スコアの変更をするたびに並び替える関数を呼ぶってことでしょうか その場合は一般的なソートではなくて、条件が限定されてる場合ならではの最適解があると考えて間違いないですよね? あと今思ったんですけど>>41の処理って下記の処理と速度ほとんど変わらない…? int kekka[10000]; int x=0; for(int i=0;i<256;i++){ for(int ID=1;ID<10000;ID++){ if(IDのスコア==i){ kekka[x]=ID; x++; } } }
- 48 名前:名前は開発中のものです。 mailto:sage [2016/03/10(木) 21:20:58.41 ID:w2U+RHTk.net]
- どっちも2,560,000ループだから変わらないね。
可読性なら、俺は45のほうが解りやすかった。 (というか45を読んでようやく41がなにをしたいのか解った) スコアの変動幅が少ない(=順位の変動が少ない)なら、 スコアが変わるたびに前後のスコアと比較して入れ換えるやりかたでもいいかな スコアが頻繁に変わるなら 数秒毎にまとめてquicksort
- 49 名前:名前は開発中のものです。 mailto:sage [2016/03/11(金) 00:14:12.32 ID:0nAdN0wU.net]
- >>44
何が言いたいのか分からんが ウィンドウより気持ち広めに描画すればいいんじゃないの?
- 50 名前:名前は開発中のものです。 mailto:sage [2016/04/22(金) 20:37:11.38 ID:OBq0v7em.net]
- スマホ版DXライブラリ使ってみた人いる?
- 51 名前:名前は開発中のものです。 mailto:sage [2016/04/22(金) 23:20:09.41 ID:SApaeOWl.net]
- 純粋なc#でDXライブラリ作りたいと考えてる
- 52 名前:名前は開発中のものです。 mailto:sage [2016/04/23(土) 15:51:01.47 ID:dvo5BuGI.net]
- フレームレートを上げてゲームの進行の高速化をしたいけどどうすればいいの?
setgraphmodeの第4引数に値をぶっこんでも何も起きん
- 53 名前:名前は開発中のものです。 mailto:sage [2016/04/23(土) 21:52:14.10 ID:9QnQQ2rD.net]
- > 画面モードを設定する
> int SetGraphMode(int ScreenSizeX,int ScreenSizeY,int ColorBitDepth,int RefreshRate=60) > 戻り値 > DX_CHANGESCREEN_OK 画面変更は成功した > DX_CHANGESCREEN_RETURN 画面の変更は失敗し、元の画面モードに戻された > DX_CHANGESCREEN_DEFAULT 画面の変更は失敗しデフォルトの画面モードに変更された > DX_CHANGESCREEN_REFRESHNORMAL 画面の変更は成功したが、リフレッシュレートの変更は失敗した とりあえず戻り値の確認しとけ。 あとはフレーム管理をどうやってるかによると思う。 垂直同期に丸投げしないで自前でフレーム管理してるなんてオチは……流石にないか
- 54 名前:名前は開発中のものです。 mailto:sage [2016/04/23(土) 22:17:31.43 ID:kA71q19C.net]
- SetWaitVSyncFlag(FALSE)
- 55 名前:名前は開発中のものです。 mailto:sage [2016/04/23(土) 23:16:26.28 ID:O3+kZkoe.net]
- ゲームループを秒間60回さなくても高速処理できちゃうの?
元より軽く作って、普段はウエイト入れてるだけにしないといけないんじゃないかな。
- 56 名前:名前は開発中のものです。 mailto:sage [2016/04/23(土) 23:49:59.85 ID:9QnQQ2rD.net]
- >>53
何を疑問に思ったが知らんが、最初からそういう話じゃねぇの
- 57 名前:名前は開発中のものです。 mailto:sage [2016/04/24(日) 08:09:36.09 ID:5496X3BE.net]
- >>52
thx。クソ速くなりました しかしSetWaitVSyncFlagの変更はDxLib_Init前でないと利かないようです 起動中に進行速度を自由に調整したかったのですが難しそうです
- 58 名前:名前は開発中のものです。 mailto:sage [2016/04/24(日) 09:15:29.66 ID:nXkxGb8d.net]
- いやだからフレーム管理方法なんて複数あるんだから
使い分ければいいじゃない
- 59 名前:名前は開発中のものです。 mailto:sage [2016/04/24(日) 09:50:30.41 ID:joRVkrHg.net]
- >>55
頭はゲームの内容を考えることに使った方がいいと思います
- 60 名前:53 mailto:sage [2016/04/26(火) 22:34:03.08 ID:x+Gf6b1S.net]
- >>54
すいません、今自分で作っているモノが何をしても60フレームで安定しているものですから、逆の意味で頭を抱えていたんです。 で、>>52氏の教えに従いVSYNCを外したら2000前後を叩きだしたので、>>51氏の最後の隠しパラメータRefreshRate=60の意味が分かりました。 本当にありがとうございました状態ですm(_ _)m 初挑戦で5年ばかり仕様に気が付かないとか、ちょっと笑えます(^^;
- 61 名前:名前は開発中のものです。 mailto:sage [2016/05/04(水) 00:59:12.39 ID:vZnLncWj.net]
- まあ使う機会があるかどうかは全く別の話だしなー
- 62 名前:名前は開発中のものです。 mailto:sage [2016/05/06(金) 14:02:59.70 ID:l2ANUrOw.net]
- 今更だけど、リフレッシュレート変えるのはアカンだろw
垂直同期もオフにすんなw 根元でフレーム間の時間経過を定数倍するとか、 更新処理を複数回呼ぶとかいろいろやり方あるだろが
- 63 名前:名前は開発中のものです。 mailto:sage [2016/05/06(金) 14:26:18.62 ID:jbS1d0cx.net]
- >>60
一般に、60決め打ちとかのほうが 初心者には作りやすいと思うぜ
- 64 名前:名前は開発中のものです。 mailto:sage [2016/05/06(金) 15:26:36.70 ID:l2ANUrOw.net]
- >>61
そういう原始的な作りでも更新処理を複数回呼べばいいだけだし・・・ まあ入門サイトにありがちな経過フレーム数を1とする可変更新方式はゴミなんで さっさと止めたほうがいいと思うよ
- 65 名前:名前は開発中のものです。 mailto:sage [2016/05/06(金) 19:13:13.73 ID:jbS1d0cx.net]
- 固定するならタイマー管理なのかねぇ
最近は120Hzとかのモニタも珍しくないし >入門サイトにありがちな経過フレーム数を1とする可変更新方式 どんなん?
- 66 名前:名前は開発中のものです。 mailto:sage [2016/05/06(金) 21:28:30.41 ID:Grw/W8UC.net]
- 俺も垂直同期切ってタイマー管理だな
75ヘルツのモニターで早送りになった経験があるから
- 67 名前:名前は開発中のものです。 mailto:sage [2016/05/06(金) 22:18:18.35 ID:l2ANUrOw.net]
- 固定更新のために垂直同期切ってタイマー管理はありだけど
ティアリングが気になったりしない? >>62はちょっと分かりにくかったかな 要は垂直同期をとりながら更新をカウントしてるようなタイプね メジャーなところだと龍神録とか この方法は環境の違いを直接受けるし、その対処も醜くなるんだよ
- 68 名前:名前は開発中のものです。 mailto:sage [2016/05/07(土) 01:18:08.48 ID:oS0WNQLp.net]
- 固定にするなら、リフレッシュレート制御かテアリングか
どっちかを取るしかないんじゃないの? >カウント 龍神録ちろっと見てみたけど分からんかった 単位時間あたりのループ回数をチェックして、それ超えそうになったらウェイト入れる感じ?
- 69 名前:50 mailto:sage [2016/05/08(日) 09:38:16.57 ID:y6rKy2Br.net]
- 2フレームに一度スクリーンフリップをすることでゲームの進行速度が2倍になりました
ゲーム中に速度の変更がきくようになったので目的は達成し解決しました
- 70 名前:名前は開発中のものです。 mailto:sage [2016/05/11(水) 22:20:44.58 ID:bMgn9LMw.net]
- ttp://gameprogrammingpatterns.com/game-loop.html#play-catch-up
- 71 名前:名前は開発中のものです。 [2016/06/07(火) 01:07:55.74 ID:hB66gw1M.net]
- 垂直同期でやってるけど何故かFPSが59.9が多いんだよな
偶に60いくんだけど。龍神録のFPS管理は何故か57FPSになる
- 72 名前:名前は開発中のものです。 mailto:sage [2016/06/07(火) 11:13:02.03 ID:AssHyOle.net]
- もともとNTSCの垂直同期って59.94Hzだけど
今のは完全に60Pなんかね
- 73 名前:名前は開発中のものです。 mailto:sage [2016/06/07(火) 20:41:15.55 ID:wUcW1H+O.net]
- 龍神録のところのプログラムって、垂直同期とタイマー待機を同時にやってた気がする
どっちかだけにするといいはず
- 74 名前:名前は開発中のものです。 [2016/06/08(水) 16:24:56.19 ID:uqtESUHJ.net]
- >>70
だからか、東方だと60FPSが多いからなんでだと思ってた >>71 龍神録のタイマー待機関数をSleepからWaitTimerにしたらいくらかマシになったけど なぜか垂直同期を切ってFPS制御するより垂直同期とFPS制御を同時にやった方が軽くなった
- 75 名前:名前は開発中のものです。 mailto:sage [2016/06/21(火) 16:36:29.41 ID:bN0TQeIa.net]
- LoadGraph等で同じ画像を複数回読み込んだときは、やはり同じ画像が複数個分メモリに展開されるのだろうか?
- 76 名前:名前は開発中のものです。 mailto:sage [2016/06/21(火) 18:42:57.95 ID:YpRlukE1.net]
- うん
- 77 名前:名前は開発中のものです。 mailto:sage [2016/06/21(火) 19:13:04.10 ID:2iYzZ5We.net]
- 画像を改変したりして複数いるなら1回読み込んで、コピーするべき
HDD等からの読み込みは遅いから
- 78 名前:名前は開発中のものです。 mailto:sage [2016/07/20(水) 18:57:39.10 ID:/hGHlgJA.net]
- 垂直同期切ってもウィンドウモードだと60fpsになっちゃうんだけどこれどうにかならない?
- 79 名前:名前は開発中のものです。 mailto:sage [2016/07/21(木) 02:55:43.25 ID:cqeRkCwh.net]
- 垂直同期切れてないんじゃない?
- 80 名前:名前は開発中のものです。 mailto:sage [2016/08/03(水) 16:59:01.47 ID:X+OZY+Fp.net]
- 仮想関数の呼び出しが遅い
最初はDXlibと関係あるのかなーと思ったけどC++の仕様っぽい みんなも気をつけろ
- 81 名前:名前は開発中のものです。 mailto:sage [2016/08/04(木) 02:17:02.01 ID:SwoLOy80.net]
- 自分も聞いたことあるけど、それがクリティカルになるって、
他のところがボトルネックになってたりしない? あとは最適化オプションとかで何とかなりそうではあるが
- 82 名前:名前は開発中のものです。 mailto:sage [2016/08/04(木) 18:34:57.87 ID:BM0zlQCD.net]
- 関数の呼び出し速度が気になるようじゃ元々が問題だと思うんだけど
実際に通常関数を呼ぶのと速度的にはどれくらいの差なんだろう
- 83 名前:名前は開発中のものです。 mailto:sage [2016/08/05(金) 17:45:28.67 ID:GXDTbL61.net]
- 3Dモデルのボーンをプログラムで動かすときに、
・ボーンをワールド座標の特定の場所を向
- 84 名前:くようにしたい(カメラの注視のようにボーンを一点に向けたい)
・ボーンをワールド座標の特定の角度にしたい。例えば、ボーンを水平な角度にしたい を行いたいのですが、 ボーンを動かすのは MV1SetFrameUserLocalMatrix でローカルの変換行列を指定する方法しかないですが どうやればできますか? [] - [ここ壊れてます]
- 85 名前:名前は開発中のものです。 mailto:sage [2016/08/07(日) 21:54:52.11 ID:0nKMuJM/.net]
- プログラムをステップ実行したときに
DXライブラリのソースにステップインするにはどうやればできますか? Visual Studio 2013使ってます
- 86 名前:名前は開発中のものです。 mailto:sage [2016/08/07(日) 22:00:00.73 ID:0nKMuJM/.net]
- ちなみにDXライブラリのソースにステップインしたい理由は
エラーコードが-1しかなくて、何が原因かわからなくて調べるためです たまに挙動不審になったときの調査もしたいです
- 87 名前:名前は開発中のものです。 mailto:sage [2016/08/07(日) 22:44:42.94 ID:0nKMuJM/.net]
- >>82は解決しました。簡単にできましたww
- 88 名前:名前は開発中のものです。 mailto:sage [2016/08/08(月) 00:03:13.72 ID:nCWjYGMh.net]
- 自己解決した時は、どんなに簡単であってもその方法をだな
- 89 名前:名前は開発中のものです。 mailto:sage [2016/08/08(月) 09:58:38.04 ID:A5U2Nxs1.net]
- その方法も何もDXライブラリのソース公開されているからlibファイルの代わりにソースをプロジェクトに追加するだけやん
- 90 名前:名前は開発中のものです。 mailto:sage [2016/08/08(月) 10:00:13.35 ID:z9kN9Vnb.net]
- pdbを置くだけでしょ
ステップインしたらその時にソースの場所聞いてくるわ
- 91 名前:名前は開発中のものです。 mailto:sage [2016/08/08(月) 10:03:39.19 ID:YjIAwMDj.net]
- という風に、人によってやり方違うので
どんなに簡単でも手順は書いておいたほうが それが質問した人の礼儀かと レスしようとして自分とこで検証して回答しようとしたら 自己解決しましたの一言でしまってたりすること多いしねえ
- 92 名前:名前は開発中のものです。 mailto:sage [2016/08/08(月) 10:12:41.36 ID:A5U2Nxs1.net]
- pdbって使い道あったのか
いつも使い道分からずに放置してたわ
- 93 名前:名前は開発中のものです。 mailto:sage [2016/08/12(金) 09:00:00.33 ID:j8xGV0qx.net]
- DXライブラリは3Dモデルの大きさをセンチメートルで管理するのがいいのか?
メートルで管理してカメラの Near Clip を小さくするとアウトラインやZTestがおかしくなる
- 94 名前:名前は開発中のものです。 mailto:sage [2016/08/13(土) 05:15:02.85 ID:smt/5o17.net]
- 単位は人それぞれだけど、精度を下げりゃ描画が甘くなるのはそりゃ当然よ
- 95 名前:名前は開発中のものです。 mailto:sage [2016/08/13(土) 08:56:44.42 ID:kHkMVs63.net]
- Zバッファのビット深度を変更する関数があったような
デフォは16bitだから32bitとかにしてみては
- 96 名前:名前は開発中のものです。 mailto:sage [2016/08/13(土) 09:38:49.80 ID:cO1Dtflu.net]
- >>90
俺も以前同じようなことで悩んだわ Near Clipは破綻しない程度に大きな値をとる必要があるとのこと 俺の場合は1メートル〜数万キロのレンジで幅が広すぎて単位をどう弄ろうがZバッファの深度を深くしようがダメだったんで、 ここで教えてもらった「ワールド空間を複数の距離レンジに区切ってそれぞれを描画し最後に合成する」手法で切り抜けた おかげでカメラが物体から5メートルまで寄ろうが1万キロ離れようがあまり問題はなくなった ただし代償として描画処理の負荷は上がったけど・・・ >>92 SetZBufferBitDepthでZバッファの深度を変えられる でも確か24ビットまでじゃなかったかな?
- 97 名前:90 mailto:sage [2016/08/13(土) 10:22:48.53 ID:MTyr6UWS.net]
- >>91-93
レスありがとうございます SetZBufferBitDepthは簡単なのですぐに試してみます 「ワールド空間を複数の距離レンジに区切ってそれぞれを描画し最後に合成する」手法は ちょっと簡単にはできなさそうですが、プロのゲームっぽいですね。すごい
- 98 名前:名前は開発中のものです。 mailto:sage [2016/08/13(土) 13:32:29.62 ID:cO1Dtflu.net]
- >>94
方法さえ教えてもらえればそんなややこしい実装じゃなかったよ 1. まずMakeScreen関数で合成用のサブ画面を作る 2. SetDrawScreen関数で作成したサブ画面を描画対象にしてその後カメラのパラメータを設定 3. SetCameraNearFar関数でカメラから一番遠いクリップ領域を指定 4. ワールド空間の物体を描画 5. SetDrawScreen関数で裏画面を描画対象にする 6. DrawGraph関数で合成用サブ画面に描いたグラフィックを裏画面に投下処理つきで描画 7. 2〜6をクリップ領域を1つずつ手前に近づけながらforループで必要回数だけ繰り返す 8. ScreenFlip関数で裏画面と表画面を切り替える みたいな感じ 継ぎ目がちょっと気になるという欠点があるらしいけど、俺の作ったプログラムでは大して問題にはならなかった
- 99 名前:名前は開発中のものです。 mailto:sage [2016/08/13(土) 17:10:08.44 ID:MTyr6UWS.net]
- >>95
ありがとうございます。実装できる気がしてきました
- 100 名前:名前は開発中のものです。 mailto:sage [2016/08/23(火) 06:56:44.62 ID:8oK85pQf.net]
- すいません。 初歩的なことを教えて下さい。
DXライブラリを3.12aから3.16d(最新版)に昨日上げたのですが、以下の様なエラーが出ます。 エラー 1 error LNK1104: ファイル 'DxDrawFunc_vs2012_x86_d.lib' を開くことができません。 丁度ドライブが一杯になったのでそれでファイル欠損起こしたのかと、整理して落としなおして 再インストールしても変わりません。 消さないでいた3.12aに戻せば正常にコンパイルできます。 どんなポカミスが考えられるでしょうか。
- 101 名前:名前は開発中のものです。 mailto:sage [2016/08/23(火) 08:00:58.44 ID:ZkV35hFb.net]
- DXライブラリのフォルダの下を 'DxDrawFunc_vs2012_x86_d.lib' で検索して、
そのフォルダがプロジェクトのプロパティの「リンカー」の中の 「追加のライブラリディレクトリ」に設定されているか確認してみたか? 設定してなかったら設定する
- 102 名前:97 mailto:sage [2016/08/23(火) 10:52:44.72 ID:8oK85pQf.net]
- ありがとうございます。
おっしゃるとおりでした。 C/C++全般のインクルードディレクトリだけ変更してリンカ全般の追加を変更していなかったのが原因でした。 これで総て正常終了できました。 ありがとうございました。
|

|