板検索:
DXライブラリ 総合スレッド その19 (170)
まとめビュー
1
名前は開発中のものです。[sage]   投稿日:2016/01/05 23:44:29  ID:fkNSYSkc.net(2)
Cを習得した程度のスキルでも、ゲームのグラフィックを比較的容易に描画する事のできる、
「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

【公式】
http://homepage2.nifty.com/natupaji/DxLib/

【関連スレ】
C/C++ゲーム製作総合スレッド Part7 [転載禁止](c)2ch.net
C/C++ゲーム製作総合スレッド Part7
ゲームプログラムなら俺に聞け32(c)2ch.net
ゲームプログラムなら俺に聞け32 /プログラム板

●DXライブラリではなくDirectXの質問ならこっちへ
【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止](c)2ch.net
【C++】 DirectX初心者質問スレ Part39 【C】 /プログラム板


2
名前は開発中のものです。[sage]   投稿日:2016/01/05 23:46:42  ID:fkNSYSkc.net(2)

3
名前は開発中のものです。[sage]   投稿日:2016/01/06 02:07:33  ID:bl/881x8.net
埋め

4
名前は開発中のものです。[]   投稿日:2016/01/06 04:35:21  ID:vkTt7kSt.net
DirectXを利用したゲーム開発のためのライブラリ「DXライブラリ」に脆弱性 - 窓の杜
http://www.forest.impress.co.jp/docs/news/20160105_737584.html

5
名前は開発中のものです。[sage]   投稿日:2016/01/06 09:50:52  ID:uUHWeNkD.net
すれたておつ〜

6
名前は開発中のものです。[sage]   投稿日:2016/01/06 13:49:00  ID:vToozi2l.net
即死回避

7
名前は開発中のものです。[sage]   投稿日:2016/01/06 21:48:53  ID:FPsnS4s5.net
リスポーンキル回避

8
名前は開発中のものです。[sage]   投稿日:2016/01/06 22:07:03  ID:SNpTpPa+.net(2)
char binadata[10000000]ってやったらエラーが出た
char binadata[9000000]だったら大丈夫だった
char binadata[10000000]でもグローバル変数だったら大丈夫だった

なんでグローバル変数だと大丈夫なん?
使うメモリの容量がローカル変数とグローバル変数では違うの?
コメント1件

9
名前は開発中のものです。[sage]   投稿日:2016/01/06 22:27:40  ID:D/YIuxFU.net
ローカルメモリはスタックメモリに配置されるからって
大学でならわなかったかい?

10
名前は開発中のものです。[sage]   投稿日:2016/01/06 23:21:49  ID:SNpTpPa+.net(2)
はい、ならいませんでした

11
名前は開発中のものです。[sage]   投稿日:2016/01/07 10:01:18  ID:Fegao3sZ.net
エラーってstack overflow?
初歩的すぎる

12
名前は開発中のものです。[sage]   投稿日:2016/01/12 13:01:35  ID:edPYChEu.net
記憶域でのスタックと静的領域とヒープの3つを理解し
適切に使い分けられなければ
蹴り入れられても文句言えない

C言語入門からやり直すべきよ

13
名前は開発中のものです。[sage]   投稿日:2016/01/24 15:52:14  ID:YuKcV9Os.net
やり直すというより、>8は現在進行形のC入門者なんだと思う

14
名前は開発中のものです。[sage]   投稿日:2016/01/25 17:48:18  ID:sajU6FWk.net(2)
ttfファイルを読み込んで使ってるんだけど、あらかじめ同じフォントがインストールされているとサイズがおかしくなる
どうにかならない?

15
名前は開発中のものです。[sage]   投稿日:2016/01/25 20:30:11  ID:sajU6FWk.net(2)
LoadFontDataToHandle関数で解決しました

16
名前は開発中のものです。[sage]   投稿日:2016/02/18 16:31:02  ID:hWOqPyim.net
今更だけどこれって
「ディーエックスライブラリ」?
「デラックスライブラリ」?
前者で読んでるけどどっちなんだ

17
名前は開発中のものです。[sage]   投稿日:2016/02/18 18:15:07  ID:CD7aF1NM.net
もともと DirectX のDXだからディーエックスでいいんじゃない

18
名前は開発中のものです。[sage]   投稿日:2016/02/18 19:31:57  ID:qySKf0j4.net(2)
ここで聞いていいのか分かりませんが

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
になるんでしょうか?
コメント2件

19
名前は開発中のものです。[sage]   投稿日:2016/02/18 20:15:38  ID:pY1Vnnd1.net
>18
多分その書籍は「同時押ししても別々に認識できる」
というのを示したかっただけな感じがするので
実際の割当がどうなっているのかはあまり気にしなくていいと思います

あと、テンキーの数字と割当整数がそのまま対応しているわけではないです

20
名前は開発中のものです。[sage]   投稿日:2016/02/18 21:30:32  ID:w6GurFPy.net
その数字のままだったら、2+4と6単体と区別つかないだろう
2進数慣れといたほうがいいよ

21
名前は開発中のものです。[sage]   投稿日:2016/02/18 22:26:00  ID:qySKf0j4.net(2)
皆さんありがとう
この部分の前後読んでもさっぱり分からないので
これ以上気にしないで先に進むことにします
この先具体例が出て来るかも知れませんしね

22
名前は開発中のものです。[sage]   投稿日:2016/02/19 07:22:42  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で。

23
名前は開発中のものです。[sage]   投稿日:2016/02/19 17:10:56  ID:yVHYDmTr.net
こうして見てると、ビット演算を他人に教えるって結構大変そうだな

24
名前は開発中のものです。[sage]   投稿日:2016/02/19 20:45:32  ID:9rsuXZwb.net
ビット演算の話なのか?

俺はてっきり
if( GetJoypadInputState( DX_INPUT_PAD1 ) & PAD_INPUT_UP )
みたいに識別子と論理積を使って判定するのではなく

if( GetJoypadInputState( DX_INPUT_PAD1 ) == 8 )
みたいにその数字で直接入力判定してるから、テンキーの割り当て整数を知りたい
っていう話をしているのかと思ったんだけど

25
名前は開発中のものです。[sage]   投稿日:2016/02/20 10:04:02  ID:EkX5eIPD.net
わざわざそんなことするメリットなくね?

26
名前は開発中のものです。[sage]   投稿日:2016/02/21 02:51:09  ID:M/Be+VbG.net(8)
とりあえず、入力状態を調べる関数の返り値を2進表記文字列と10進表記文字列で対にして画面左上に表示するだけの簡単なアプリ作っても良いかと思う。

と、ここで気になって調べたら、2進文字列への変換は
Cはitoa←VCでしか使えない? 今回は使えるかな
C++はstd::bitset

簡単なはずなのに、簡単でない気がしてきた。
用途限定なら自作した方が楽な(学べる)気もする。

27
名前は開発中のものです。[sage]   投稿日:2016/02/21 04:47:37  ID:M/Be+VbG.net(8)
>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)とかも同じ考え方。これは条件が常に真(偽(0)ではない)なので無限ループになる。
for(初期化(が多い);継続の条件;条件が真なら行うこと)
いずれ条件が偽になるからこそ使えるということ。

>if( GetJoypadInputState( DX_INPUT_PAD1 ) == 8 )
というかね、それならまだ
if(GetJoypadInputState(DX_INPUT_PAD1)==(PAD_INPUT_UP|PAD_INPUT_LEFT))
こういう例をあげてくれたほうが嬉しかったかな。
|を+にかえても思ったとおりに動作はするかも知れないが、それではいけないということ。

28
名前は開発中のものです。[sage]   投稿日:2016/02/21 05:53:09  ID:M/Be+VbG.net(8)
if(GetJoypadInputState(DX_INPUT_PAD1)&(PAD_INPUT_UP|PAD_INPUT_LEFT))
にしないと使えないね。

寝ます。

29
名前は開発中のものです。[sage]   投稿日:2016/02/21 06:01:12  ID:M/Be+VbG.net(8)
ごめんこれも使えなかった。
同時に押された判定はすこし長くなるな。
このままではどちらか片方押さた場合でも、、、
眠い。ほんと寝ます。

30
名前は開発中のものです。[sage]   投稿日:2016/02/21 08:09:43  ID:M/Be+VbG.net(8)
if(GetJoypadInputState(DX_INPUT_PAD1)&(PAD_INPUT_UP|PAD_INPUT_LEFT)==(PAD_INPUT_UP|PAD_INPUT_LEFT))
一つのキーチェックは!=0でいいけど
ボタン1|ボタン2|ボタン3
とか複数キーが押されているかのチェックの場合は駄目ですね。一つのキーが押されただけでも!=0を満たしてしまうから。
連投すいません。そして初級者以外の方、失礼しました。

31
名前は開発中のものです。[sage]   投稿日:2016/02/21 08:25:35  ID:M/Be+VbG.net(8)
if((GetJoypadInputState(DX_INPUT_PAD1)&(PAD_INPUT_UP|PAD_INPUT_LEFT))==(PAD_INPUT_UP|PAD_INPUT_LEFT))
すいません。もう一度だけ。
c 演算子 優先順位 で検索してください。
確か&(アドレスじゃない方)は==よりあとに評価された気がする。これはCの欠陥ではないのかとか書いてた書籍があった気がする。

不安だし、()はつけといたほうが良いと思う。

32
24[sage]   投稿日:2016/02/21 09:00:22  ID:Va9zPPiV.net(2)
なぜ俺が適当に上げた例に対して
何レスにも渡って解りづらい解説をしているのだ・・・

というか肝心の>18はもう居ないっぽいから
質問したかった内容自体がそこで合ってるのかわからんぞ

33
名前は開発中のものです。[sage]   投稿日:2016/02/21 09:24:49  ID:M/Be+VbG.net(8)
これでも簡単に書こうとしたのですけどね。
どの辺がわかりづらいですか?
簡単なことを簡単に書くのは難しいですね。
コメント1件

34
名前は開発中のものです。[sage]   投稿日:2016/02/21 10:04:32  ID:Va9zPPiV.net(2)
>33
説明が長くなるほど要点をつかみづらくなるから
補足は少なく、説明の訂正は出ないようにして、
大事な部分だけ短く簡単に説明した方が初心者には理解しやすい

補足とかは質問者に求められたときだけ説明すればいいかと
コメント1件

35
名前は開発中のものです。[sage]   投稿日:2016/02/21 11:11:53  ID:M/Be+VbG.net(8)
>34
了解です。

36
名前は開発中のものです。[sage]   投稿日:2016/02/29 21:14:11  ID:QBvMTSC4.net
DXLibは初心者向けって聞くけど、シャープDXなどと何が違うの?
2Dゲームの場合。3Dなら素直にUnity使うし

37
名前は開発中のものです。[sage]   投稿日:2016/02/29 23:23:38  ID:leqKH6jq.net
シャープDXってなんぞ。
初心者にオススメの1つではあるが、これで作られた市販ゲームもあるくらいには幅広いよ

38
名前は開発中のものです。[sage]   投稿日:2016/03/01 05:56:45  ID:+UwmpDoJ.net
C言語で書きたくてwindowsAPI、グラフィックAPI触りたくない人向け

39
名前は開発中のものです。[sage]   投稿日:2016/03/01 15:06:45  ID:YBHnpXlS.net
確かにC++ぽく作られてないのは嬉しい。
他の人のソースコードとかが解読しやすい。

40
名前は開発中のものです。[sage]   投稿日:2016/03/02 02:56:18  ID:ObT9YhJL.net
俺もライブラリ作ってやるぜ!と意気込んで、
グラフィックと入力と音周りが出来たあたりで、DXライブラリで良いんじゃね?と気づいて戻ってくる感じ

41
名前は開発中のものです。[sage]   投稿日:2016/03/10 14:06:18  ID:hKSGgP4O.net(2)
キャラクター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メガくらい使うみたいですし
もっとスマートなやり方は無いものでしょうか?

ただ、かなり頻繁に呼ぶ処理なので最優先したいのは速度です
コメント1件

42
名前は開発中のものです。[sage]   投稿日:2016/03/10 14:23:40  ID:chbXq+m7.net
普通にクイックソートでいいのでは

ソート時間の比較
http://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/speed-c...

43
名前は開発中のものです。[sage]   投稿日:2016/03/10 14:44:23  ID:w2U+RHTk.net(2)
そもそも頻繁に呼び出すなら
いちいちソートしないでソート結果をずっと保持する。
オブジェクトの追加削除が頻繁なら、
ソートではなく、正しい位置に差し込むようにする。
コメント1件

44
名前は開発中のものです。[sage]   投稿日:2016/03/10 14:44:30  ID:HzV85MQu.net
RPGなどのスクロールゲーは、描画可能画像(マップサイズ)を作ってそこに描画した後に、ウィンドウに描画すればいいのですか?
速度やメモリを考えると、やめた方がいいですかね
コメント1件

45
名前は開発中のものです。[sage]   投稿日:2016/03/10 15:25:16  ID:hKSGgP4O.net(2)
>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++;
  }
 }
}

46
名前は開発中のものです。[sage]   投稿日:2016/03/10 21:20:58  ID:w2U+RHTk.net(2)
どっちも2,560,000ループだから変わらないね。
可読性なら、俺は45のほうが解りやすかった。
(というか45を読んでようやく41がなにをしたいのか解った)

スコアの変動幅が少ない(=順位の変動が少ない)なら、
スコアが変わるたびに前後のスコアと比較して入れ換えるやりかたでもいいかな

スコアが頻繁に変わるなら
数秒毎にまとめてquicksort

47
名前は開発中のものです。[sage]   投稿日:2016/03/11 00:14:12  ID:0nAdN0wU.net
>44
何が言いたいのか分からんが
ウィンドウより気持ち広めに描画すればいいんじゃないの?

48
名前は開発中のものです。[sage]   投稿日:2016/04/22 20:37:11  ID:OBq0v7em.net
スマホ版DXライブラリ使ってみた人いる?

49
名前は開発中のものです。[sage]   投稿日:2016/04/22 23:20:09  ID:SApaeOWl.net
純粋なc#でDXライブラリ作りたいと考えてる

50
名前は開発中のものです。[sage]   投稿日:2016/04/23 15:51:01  ID:dvo5BuGI.net
フレームレートを上げてゲームの進行の高速化をしたいけどどうすればいいの?
setgraphmodeの第4引数に値をぶっこんでも何も起きん

51
名前は開発中のものです。[sage]   投稿日:2016/04/23 21:52:14  ID:9QnQQ2rD.net(2)
> 画面モードを設定する
> int SetGraphMode(int ScreenSizeX,int ScreenSizeY,int ColorBitDepth,int RefreshRate=60)

> 戻り値
> DX_CHANGESCREEN_OK 画面変更は成功した
> DX_CHANGESCREEN_RETURN 画面の変更は失敗し、元の画面モードに戻された
> DX_CHANGESCREEN_DEFAULT 画面の変更は失敗しデフォルトの画面モードに変更された
> DX_CHANGESCREEN_REFRESHNORMAL 画面の変更は成功したが、リフレッシュレートの変更は失敗した

とりあえず戻り値の確認しとけ。
あとはフレーム管理をどうやってるかによると思う。
垂直同期に丸投げしないで自前でフレーム管理してるなんてオチは……流石にないか
コメント1件

52
名前は開発中のものです。[sage]   投稿日:2016/04/23 22:17:31  ID:kA71q19C.net
SetWaitVSyncFlag(FALSE)
コメント2件

53
名前は開発中のものです。[sage]   投稿日:2016/04/23 23:16:26  ID:O3+kZkoe.net
 ゲームループを秒間60回さなくても高速処理できちゃうの?
 元より軽く作って、普段はウエイト入れてるだけにしないといけないんじゃないかな。
コメント1件

54
名前は開発中のものです。[sage]   投稿日:2016/04/23 23:49:59  ID:9QnQQ2rD.net(2)
>53
何を疑問に思ったが知らんが、最初からそういう話じゃねぇの
コメント1件

55
名前は開発中のものです。[sage]   投稿日:2016/04/24 08:09:36  ID:5496X3BE.net
>52
thx。クソ速くなりました
しかしSetWaitVSyncFlagの変更はDxLib_Init前でないと利かないようです
起動中に進行速度を自由に調整したかったのですが難しそうです
コメント1件

56
名前は開発中のものです。[sage]   投稿日:2016/04/24 09:15:29  ID:nXkxGb8d.net
いやだからフレーム管理方法なんて複数あるんだから
使い分ければいいじゃない

57
名前は開発中のものです。[sage]   投稿日:2016/04/24 09:50:30  ID:joRVkrHg.net
>55
頭はゲームの内容を考えることに使った方がいいと思います

58
53[sage]   投稿日:2016/04/26 22:34:03  ID:x+Gf6b1S.net
>54
 すいません、今自分で作っているモノが何をしても60フレームで安定しているものですから、逆の意味で頭を抱えていたんです。
 で、>52氏の教えに従いVSYNCを外したら2000前後を叩きだしたので、>51氏の最後の隠しパラメータRefreshRate=60の意味が分かりました。
 本当にありがとうございました状態ですm(_ _)m

 初挑戦で5年ばかり仕様に気が付かないとか、ちょっと笑えます(^^;

59
名前は開発中のものです。[sage]   投稿日:2016/05/04 00:59:12  ID:vZnLncWj.net
まあ使う機会があるかどうかは全く別の話だしなー

60
名前は開発中のものです。[sage]   投稿日:2016/05/06 14:02:59  ID:l2ANUrOw.net(3)
今更だけど、リフレッシュレート変えるのはアカンだろw
垂直同期もオフにすんなw
根元でフレーム間の時間経過を定数倍するとか、
更新処理を複数回呼ぶとかいろいろやり方あるだろが
コメント1件

61
名前は開発中のものです。[sage]   投稿日:2016/05/06 14:26:18  ID:jbS1d0cx.net(2)
>60
一般に、60決め打ちとかのほうが
初心者には作りやすいと思うぜ
コメント1件

62
名前は開発中のものです。[sage]   投稿日:2016/05/06 15:26:36  ID:l2ANUrOw.net(3)
>61
そういう原始的な作りでも更新処理を複数回呼べばいいだけだし・・・
まあ入門サイトにありがちな経過フレーム数を1とする可変更新方式はゴミなんで
さっさと止めたほうがいいと思うよ
コメント1件

63
名前は開発中のものです。[sage]   投稿日:2016/05/06 19:13:13  ID:jbS1d0cx.net(2)
固定するならタイマー管理なのかねぇ
最近は120Hzとかのモニタも珍しくないし


>入門サイトにありがちな経過フレーム数を1とする可変更新方式
どんなん?

64
名前は開発中のものです。[sage]   投稿日:2016/05/06 21:28:30  ID:Grw/W8UC.net
俺も垂直同期切ってタイマー管理だな
75ヘルツのモニターで早送りになった経験があるから

65
名前は開発中のものです。[sage]   投稿日:2016/05/06 22:18:18  ID:l2ANUrOw.net(3)
固定更新のために垂直同期切ってタイマー管理はありだけど
ティアリングが気になったりしない?

>62はちょっと分かりにくかったかな
要は垂直同期をとりながら更新をカウントしてるようなタイプね
メジャーなところだと龍神録とか
この方法は環境の違いを直接受けるし、その対処も醜くなるんだよ

66
名前は開発中のものです。[sage]   投稿日:2016/05/07 01:18:08  ID:oS0WNQLp.net
固定にするなら、リフレッシュレート制御かテアリングか
どっちかを取るしかないんじゃないの?

>カウント
龍神録ちろっと見てみたけど分からんかった
単位時間あたりのループ回数をチェックして、それ超えそうになったらウェイト入れる感じ?

67
50[sage]   投稿日:2016/05/08 09:38:16  ID:y6rKy2Br.net
2フレームに一度スクリーンフリップをすることでゲームの進行速度が2倍になりました
ゲーム中に速度の変更がきくようになったので目的は達成し解決しました

68
名前は開発中のものです。[sage]   投稿日:2016/05/11 22:20:44  ID:bMgn9LMw.net

69
名前は開発中のものです。[]   投稿日:2016/06/07 01:07:55  ID:hB66gw1M.net
垂直同期でやってるけど何故かFPSが59.9が多いんだよな
偶に60いくんだけど。龍神録のFPS管理は何故か57FPSになる

70
名前は開発中のものです。[sage]   投稿日:2016/06/07 11:13:02  ID:AssHyOle.net
もともとNTSCの垂直同期って59.94Hzだけど
今のは完全に60Pなんかね
コメント1件

71
名前は開発中のものです。[sage]   投稿日:2016/06/07 20:41:15  ID:wUcW1H+O.net
龍神録のところのプログラムって、垂直同期とタイマー待機を同時にやってた気がする
どっちかだけにするといいはず
コメント1件

72
名前は開発中のものです。[]   投稿日:2016/06/08 16:24:56  ID:uqtESUHJ.net
>70
だからか、東方だと60FPSが多いからなんでだと思ってた
>71
龍神録のタイマー待機関数をSleepからWaitTimerにしたらいくらかマシになったけど
なぜか垂直同期を切ってFPS制御するより垂直同期とFPS制御を同時にやった方が軽くなった

73
名前は開発中のものです。[sage]   投稿日:2016/06/21 16:36:29  ID:bN0TQeIa.net
LoadGraph等で同じ画像を複数回読み込んだときは、やはり同じ画像が複数個分メモリに展開されるのだろうか?


74
名前は開発中のものです。[sage]   投稿日:2016/06/21 18:42:57  ID:YpRlukE1.net
うん

75
名前は開発中のものです。[sage]   投稿日:2016/06/21 19:13:04  ID:2iYzZ5We.net
画像を改変したりして複数いるなら1回読み込んで、コピーするべき
HDD等からの読み込みは遅いから

76
名前は開発中のものです。[sage]   投稿日:2016/07/20 18:57:39  ID:/hGHlgJA.net
垂直同期切ってもウィンドウモードだと60fpsになっちゃうんだけどこれどうにかならない?

77
名前は開発中のものです。[sage]   投稿日:2016/07/21 02:55:43  ID:cqeRkCwh.net
垂直同期切れてないんじゃない?

78
名前は開発中のものです。[sage]   投稿日:2016/08/03 16:59:01  ID:X+OZY+Fp.net
仮想関数の呼び出しが遅い
最初はDXlibと関係あるのかなーと思ったけどC++の仕様っぽい
みんなも気をつけろ

79
名前は開発中のものです。[sage]   投稿日:2016/08/04 02:17:02  ID:SwoLOy80.net
自分も聞いたことあるけど、それがクリティカルになるって、
他のところがボトルネックになってたりしない?

あとは最適化オプションとかで何とかなりそうではあるが

80
名前は開発中のものです。[sage]   投稿日:2016/08/04 18:34:57  ID:BM0zlQCD.net
関数の呼び出し速度が気になるようじゃ元々が問題だと思うんだけど
実際に通常関数を呼ぶのと速度的にはどれくらいの差なんだろう

81
名前は開発中のものです。[sage]   投稿日:2016/08/05 17:45:28  ID:GXDTbL61.net
3Dモデルのボーンをプログラムで動かすときに、
・ボーンをワールド座標の特定の場所を向くようにしたい(カメラの注視のようにボーンを一点に向けたい)
・ボーンをワールド座標の特定の角度にしたい。例えば、ボーンを水平な角度にしたい
を行いたいのですが、
ボーンを動かすのは MV1SetFrameUserLocalMatrix でローカルの変換行列を指定する方法しかないですが
どうやればできますか?

82
名前は開発中のものです。[sage]   投稿日:2016/08/07 21:54:52  ID:0nKMuJM/.net(3)
プログラムをステップ実行したときに
DXライブラリのソースにステップインするにはどうやればできますか?
Visual Studio 2013使ってます
コメント1件

83
名前は開発中のものです。[sage]   投稿日:2016/08/07 22:00:00  ID:0nKMuJM/.net(3)
ちなみにDXライブラリのソースにステップインしたい理由は
エラーコードが-1しかなくて、何が原因かわからなくて調べるためです
たまに挙動不審になったときの調査もしたいです

84
名前は開発中のものです。[sage]   投稿日:2016/08/07 22:44:42  ID:0nKMuJM/.net(3)
>82は解決しました。簡単にできましたww

85
名前は開発中のものです。[sage]   投稿日:2016/08/08 00:03:13  ID:nCWjYGMh.net
自己解決した時は、どんなに簡単であってもその方法をだな

86
名前は開発中のものです。[sage]   投稿日:2016/08/08 09:58:38  ID:A5U2Nxs1.net(2)
その方法も何もDXライブラリのソース公開されているからlibファイルの代わりにソースをプロジェクトに追加するだけやん

87
名前は開発中のものです。[sage]   投稿日:2016/08/08 10:00:13  ID:z9kN9Vnb.net
pdbを置くだけでしょ
ステップインしたらその時にソースの場所聞いてくるわ

88
名前は開発中のものです。[sage]   投稿日:2016/08/08 10:03:39  ID:YjIAwMDj.net
という風に、人によってやり方違うので
どんなに簡単でも手順は書いておいたほうが

それが質問した人の礼儀かと
レスしようとして自分とこで検証して回答しようとしたら
自己解決しましたの一言でしまってたりすること多いしねえ

89
名前は開発中のものです。[sage]   投稿日:2016/08/08 10:12:41  ID:A5U2Nxs1.net(2)
pdbって使い道あったのか
いつも使い道分からずに放置してたわ

90
名前は開発中のものです。[sage]   投稿日:2016/08/12 09:00:00  ID:j8xGV0qx.net
DXライブラリは3Dモデルの大きさをセンチメートルで管理するのがいいのか?
メートルで管理してカメラの Near Clip を小さくするとアウトラインやZTestがおかしくなる
コメント1件

91
名前は開発中のものです。[sage]   投稿日:2016/08/13 05:15:02  ID:smt/5o17.net
単位は人それぞれだけど、精度を下げりゃ描画が甘くなるのはそりゃ当然よ
コメント1件

92
名前は開発中のものです。[sage]   投稿日:2016/08/13 08:56:44  ID:kHkMVs63.net
Zバッファのビット深度を変更する関数があったような
デフォは16bitだから32bitとかにしてみては
コメント1件

93
名前は開発中のものです。[sage]   投稿日:2016/08/13 09:38:49  ID:cO1Dtflu.net(2)
>90
俺も以前同じようなことで悩んだわ
Near Clipは破綻しない程度に大きな値をとる必要があるとのこと
俺の場合は1メートル〜数万キロのレンジで幅が広すぎて単位をどう弄ろうがZバッファの深度を深くしようがダメだったんで、
ここで教えてもらった「ワールド空間を複数の距離レンジに区切ってそれぞれを描画し最後に合成する」手法で切り抜けた
おかげでカメラが物体から5メートルまで寄ろうが1万キロ離れようがあまり問題はなくなった
ただし代償として描画処理の負荷は上がったけど・・・

>92
SetZBufferBitDepthでZバッファの深度を変えられる
でも確か24ビットまでじゃなかったかな?

94
90[sage]   投稿日:2016/08/13 10:22:48  ID:MTyr6UWS.net(2)
>91-93
レスありがとうございます
SetZBufferBitDepthは簡単なのですぐに試してみます
「ワールド空間を複数の距離レンジに区切ってそれぞれを描画し最後に合成する」手法は
ちょっと簡単にはできなさそうですが、プロのゲームっぽいですね。すごい
コメント1件

95
名前は開発中のものです。[sage]   投稿日:2016/08/13 13:32:29  ID:cO1Dtflu.net(2)
>94
方法さえ教えてもらえればそんなややこしい実装じゃなかったよ

1. まずMakeScreen関数で合成用のサブ画面を作る
2. SetDrawScreen関数で作成したサブ画面を描画対象にしてその後カメラのパラメータを設定
3. SetCameraNearFar関数でカメラから一番遠いクリップ領域を指定
4. ワールド空間の物体を描画
5. SetDrawScreen関数で裏画面を描画対象にする
6. DrawGraph関数で合成用サブ画面に描いたグラフィックを裏画面に投下処理つきで描画
7. 2〜6をクリップ領域を1つずつ手前に近づけながらforループで必要回数だけ繰り返す
8. ScreenFlip関数で裏画面と表画面を切り替える

みたいな感じ
継ぎ目がちょっと気になるという欠点があるらしいけど、俺の作ったプログラムでは大して問題にはならなかった
コメント1件

96
名前は開発中のものです。[sage]   投稿日:2016/08/13 17:10:08  ID:MTyr6UWS.net(2)
>95
ありがとうございます。実装できる気がしてきました

97
名前は開発中のものです。[sage]   投稿日:2016/08/23 06:56:44  ID:8oK85pQf.net(2)
 すいません。 初歩的なことを教えて下さい。
 DXライブラリを3.12aから3.16d(最新版)に昨日上げたのですが、以下の様なエラーが出ます。
エラー 1 error LNK1104: ファイル 'DxDrawFunc_vs2012_x86_d.lib' を開くことができません。

 丁度ドライブが一杯になったのでそれでファイル欠損起こしたのかと、整理して落としなおして
再インストールしても変わりません。 消さないでいた3.12aに戻せば正常にコンパイルできます。
 どんなポカミスが考えられるでしょうか。

98
名前は開発中のものです。[sage]   投稿日:2016/08/23 08:00:58  ID:ZkV35hFb.net
DXライブラリのフォルダの下を 'DxDrawFunc_vs2012_x86_d.lib' で検索して、
そのフォルダがプロジェクトのプロパティの「リンカー」の中の
「追加のライブラリディレクトリ」に設定されているか確認してみたか?
設定してなかったら設定する

99
97[sage]   投稿日:2016/08/23 10:52:44  ID:8oK85pQf.net(2)
 ありがとうございます。
 おっしゃるとおりでした。
 C/C++全般のインクルードディレクトリだけ変更してリンカ全般の追加を変更していなかったのが原因でした。
 これで総て正常終了できました。
 ありがとうございました。

100
97[sage]   投稿日:2016/09/16 19:48:32  ID:/GVguODS.net
DrawBox()って思った以上にコスト高なのね。
エディタ作っているのですが、マウスで指定範囲を決定するのに半透明のFilling=TRUEで
サイズが{400,200}程度になると追いついて来ないし。うちの環境だと。
まあ範囲が分かれば良いだけなので、非透明のFilling=FALSEにしましたが。
機能の根幹に必要な命令じゃなくて良かった・・・。

101
名前は開発中のものです。[sage]   投稿日:2016/09/16 20:42:39  ID:arX7j3iZ.net
ハードウェアで描画してないだけちゃうの?
コメント1件

102
100[sage]   投稿日:2016/09/17 02:14:24  ID:bU3etqlH.net
>101
SetUse3DFlag()指定しなければデフォで使ってくれないの?
TRUEで明示してみたけどやっぱ重かった。

103
名前は開発中のものです。[sage]   投稿日:2016/09/18 05:02:11  ID:/gg7FKD1.net
画面全体塗りつぶすのに毎フレーム使ったりするし重いわけないと思うがなぁ
最新版では試してないけど
コメント1件

104
100[sage]   投稿日:2016/09/22 22:23:47  ID:j/yM3Z13.net
>103
 すいません、DXライブラリは無罪でした。
 コード読み直していたら、離れた所から12回ループでDrawBox()してからScreenFlip()しておりました。
 そりゃ感覚とは結果が違うのも当たり前で。
 大変失礼しました・・・。

105
名前は開発中のものです。[sage]   投稿日:2016/09/23 11:02:39  ID:grmg4z9F.net
        ∧∧       
       ヽ(・ω・)/   ズコー  
      \(.\ ノ
    、ハ,,、  ̄

まぁ原因判明してよかったね

106
名前は開発中のものです。[sage]   投稿日:2016/09/26 22:11:34  ID:gS8npJwc.net
スーファミっぽくラスタースクロールの波うつようなあのぐにゃぐにゃした表現をしたいんだけれども
DrawRectGraphで一列ずつ描画するのと
SetDrawAreaで描画できる範囲を一列ずつ変更しながら描画するのと
どっちが早いんだろう
コメント1件

107
名前は開発中のものです。[sage]   投稿日:2016/09/27 07:34:39  ID:6RU/4Se1.net
どっちもクソ遅そうな気が……
ラスタースクロールのシェーダー書くのがいいが、
シェーダーはDXライブラリではちょっと敷居が高くてプログラム難しそうなのな
ボーンを仕込んだポリゴンの板に画面の画像を貼り付けて、
ボーンでラスタースクロールふうにアニメーションさせるのが楽な気がする

108
名前は開発中のものです。[sage]   投稿日:2016/09/27 12:29:31  ID:kk2kAC73.net
10年前のPCで動くSTG(弾は500発程度)で、640*480程度なら上から一行ずつ描画でも特に処理落ちしなかった
DrawRectGraph使った

今のハードなら余裕だと思う

109
名前は開発中のものです。[sage]   投稿日:2016/10/04 20:15:50  ID:rnDdxDqG.net
SetLoopAreaTimePosSoundMem()

この関数めっちゃ便利なんだけどググっても全くヒットしなかったんだが、いつ頃からあるんだろ?
ループ開始位置と終了位置をms単位で指定できるから音声ファイルを編集する必要がなくなった
無加工のファイルでもこっちの好みでループ範囲を指定できるから
音楽ファイルはこの素材屋からDLしてねってreadmeに書いておけば配布するファイルサイズも小さく出来る

あと軽く検証しただけだけど再生中に指定しなおしても有効だったから
FF6のラスボス戦みたいに
イントロ‐Aメロ‐繋ぎ‐Bメロ‐繋ぎ‐Cメロ〜 みたいになってるファイルで
最初はAメロをループ、条件を満たしたら繋ぎを経由してBメロループに移行〜みたいな演出も簡単に出来る
コメント1件

110
名前は開発中のものです。[sage]   投稿日:2016/10/04 21:56:37  ID:HgclvPkb.net
そんなのあったのか
最後まで行ったら途中から再生、ってのは
結構前からあったの覚えてるんだが

111
名前は開発中のものです。[]   投稿日:2016/10/15 11:32:13  ID:NMxKtSgQ.net
試してないけど

アンドロイドでも

動くように

なってたのね知らなかった

何処まで、動くのかな?

112
名前は開発中のものです。[sage]   投稿日:2016/10/16 19:58:12  ID:ZsomXKa1.net
あらかじめ大きめのサイズの空っぽの画像をMakeScreenで用意しておくことの有用性に今頃気付いたぜ
これとDerivationGraphのコンビで作り直したらぐっと軽くなった

113
名前は開発中のものです。[sage]   投稿日:2016/10/16 21:02:14  ID:ldA8bGPF.net
テクスチャ切り替えはコスト大きいからね

114
名前は開発中のものです。[sage]   投稿日:2016/10/23 23:02:40  ID:t2BOiWAY.net
>109
 使ってみたら、ほんとにスゴイですね。
 時代がCDDAやストリーミング再生になってもう無限ループは無理なのかなーとか思っていたのだけど。
 ただWAVEで成功したのでそのデータをMP3にしたら、上手く繋がらなくなっちゃった。
 もう少しデータの作り方工夫すれば上手く行くのだろうけど。
コメント1件

115
名前は開発中のものです。[sage]   投稿日:2016/10/24 06:53:24  ID:YwSDnTaO.net
>114
MP3はこの関数に限らずループの時に違和感が出ると言われてるから
たぶんMP3の仕様の問題もあると思う

ogg形式では上手くいったよ
ただ変換の時にビットレートを固定したファイルでしか検証してないから
可変ビットレートの方法で圧縮されたoggファイルで上手くいくかは未検証

116
名前は開発中のものです。[sage]   投稿日:2016/10/24 12:40:43  ID:GmlKA2wN.net
MP3は権利の問題があるから他の使えって言われてた時期があったね

117
名前は開発中のものです。[sage]   投稿日:2016/10/24 13:10:36  ID:Y2gOrRK8.net
権利よりも仕様が問題だな
MP3は無音が挿入されたり余計なことされる場合が多いからゲームに使うようなもんじゃない

他の環境では手抜き実装でWindowsの再生機能に丸投げできるメリットがあるが、DXライブラリなら関係ないし

118
名前は開発中のものです。[sage]   投稿日:2016/10/24 23:43:54  ID:UrCtC7CV.net
ループできないからだったか、昔は
DXライブラリではogg使うなとかもあったね

119
名前は開発中のものです。[sage]   投稿日:2016/10/27 13:49:28  ID:1Lorx2LL.net
昔は BGMにはmp3, 効果音にはwav だったでしょ

120
名前は開発中のものです。[sage]   投稿日:2016/10/27 15:57:58  ID:HwaxCMEV.net(2)
116の言う通りmp3はライセンス関係が危ないということで避けられoggが推奨されていた
仕様よりもこっちのほうが重大問題
ゲーム制作関係でmp3推奨というのは聞いたことがない

121
名前は開発中のものです。[sage]   投稿日:2016/10/27 17:43:02  ID:rFz+rXeH.net
MP3登場時にはoggなんてなかったから
Wavよりファイルサイズの小さいMP3を推奨する風潮はあったと思うけど

122
名前は開発中のものです。[sage]   投稿日:2016/10/27 18:10:43  ID:HwaxCMEV.net(2)
ogg普及前はソフトウェアMIDIが多かった
もしmp3が主流だったと思う人がいたら、その人のいた界隈はライセンス関係の意識が薄かったんだよ
まぁ00年代前半まではそういう時期でもあったけど

123
名前は開発中のものです。[sage]   投稿日:2016/10/27 20:01:09  ID:lueiMAyc.net
市販のゲームで5000本以上販売が課金の条件だったから、フリーゲームや小規模同人では普通に使われてたよ

124
名前は開発中のものです。[sage]   投稿日:2016/10/27 20:28:51  ID:BuMiN4CL.net
制作中のゲームにはキャラの髪型や服や装備や小物を変えるキャラメイキング(着替え)の機能があって、
今はひとつのMV1ファイルにまとめておき、フレーム表示/非表示で切り替えてるのですが、
だんだんアイテムが増えてきてファイルが大きくなってしまったので
別の方法をとりたいのですが、
キャラメイキングや着替えを実装するのに何かいい方法ありませんか?
髪型や服や装備や小物ごとにXファイルでバラバラにしておいて、Xファイルをテキスト結合するのが
楽なのではないかと思っていますが、もっと良い方法ありませんか?

125
名前は開発中のものです。[sage]   投稿日:2016/10/31 19:03:23  ID:X+KVjoNa.net
DXライブラリのユーザーが作ってるのって
2Dゲーと3Dゲーのどっちが多いんだろ?
俺は3Dには手が出せてないんだけど

126
名前は開発中のものです。[sage]   投稿日:2016/10/31 19:10:44  ID:8dsRDt6U.net
2D

127
名前は開発中のものです。[sage]   投稿日:2016/11/01 22:09:07  ID:kJ7Uoghc.net
3Dは海外のゲームエンジンが無料化されてしまったので、
3Dゲーム制作者はそっちへ行ってしまった気がする
2Dだとどれもあんまり変わらない気がするが

128
名前は開発中のものです。[sage]   投稿日:2016/11/01 22:26:25  ID:+8ot24fl.net
2Dも描画しかないDXライブラリよりもオブジェクト管理出来たりするエンジンに流れている気がする

129
名前は開発中のものです。[sage]   投稿日:2016/11/02 07:20:39  ID:/aW+4m+D.net(3)
全部コードに直書きする形でならなんとか自分の思う通りに作れるようになったとは思うんだけど
さすがに会話イベント一個追加したり、マップに壺一個追加しただけで再コンパイルする必要がある状況って
なんというか我ながらアホだよね

この状況を卒業するには何を勉強したらいいのかアドバイスください
作ってるのは2DRPGで、主にNPCのイベント内容をコードの外に出すにはどうやればいいかで躓いてます

とりあえず思いついてるやり方は
セリフ表示とか効果音を鳴らすとかのイベント処理を担っている関数に番号振って引数の数を紐付けしておいて
イベントの内容を全部、関数の番号、引数の数、引数の数値…って数字だけのデータにして
そのデータを読み込んで、どの関数を呼び出し引数にはどんな数値を入れるかを判断して実行する関数を作り
イベントの内容を全部数値に置き換える方法なんですけど
コメント1件

130
名前は開発中のものです。[sage]   投稿日:2016/11/02 08:13:58  ID:8LrVjVrS.net
>129
自分でも気付いてる通り、基本原則はコードとリソースを分離すること。

テキストファイルの読み込みと解析が出来るなら
単純なシナリオファイル(会話+αくらい)のローダくらいなら比較的簡単。
まあそれ以上に複雑なことをやるなら、素直に
既存のスクリプト言語の組み込み用ライブラリを頼ったほうが良いと思うけどね。


次点としては、ソースファイルの構成を見直して、最低限のビルドでも済むようにすること。

各クラスの書き方、各ファイルの依存関係なんかを整頓することで、
ちょっと修正したくらいなら、長時間のビルドを要さなくなる。

131
名前は開発中のものです。[sage]   投稿日:2016/11/02 13:45:37  ID:/aW+4m+D.net(3)
大体の方向性はこんな感じでいいんだということであれば進めていきたいんですが
躊躇している理由が2つあります

基本的に作り始める時に
クラスとかポインタとかよくわかんないけどとりあえずやってみるべ!と始めたので
配列と構造体だけで設計されてて、実は今でもクラスのことはよくわかっていません
だけどキー入力を把握すことと、変数の操作と、画像と音を自分の望む形で望むタイミングに表示再生出来るなら
自分の作りたいゲームは作ることが出来るはずだ!という考えの下で強引に作り続け
変数の値に合わせて画像や音の状態を制御する関数を作って、それを毎フレームScreenFlipの前に呼び出している
なんていう作りになってしまってます

キャラクターに歩行アニメーションや特殊なポーズをとらせたりするのも
BGMを変更するのも効果音を鳴らすのも、HPMPの増減やアイテムの入手なども
picture[ kyaraDATA[kyaraid].pictureID ].pattern=8;
SEplayflag[seID]=1;    BGMID=BattleBGMID; とか
kyaraHP[kyaraid]+=1000;
itemstorage[itemid]++; とか
ほとんどこういう形でイベントを組み立ててるんですよね……
ちなみにこの変数全部グローバル変数です

この単純な変数操作を外に出のに、変数全部に番号振ってやる以外に方法が思いつかず
その数が数だけにちょっと躊躇っているのです
それに
if(itemstorage[itemid]<99){
itemstorage[itemid]++;
takarabakoOpenFlag[takaraID]=1;
}else{
JISAKU_serihu(1,"これ以上持てない",0);//最初の引数がしゃべるキャラ、最後のは吹き出しの形のタイプ指定
}
みたいに作ってるイベントの条件分岐の部分の外部への出力方法が思いつかないっていう問題点もあります

なんかこう、こんな低レベルな人間にもできる上手いやり方ありませんかね?
コメント1件

132
名前は開発中のものです。[sage]   投稿日:2016/11/02 15:10:54  ID:C/+BZRXz.net(2)
2chは行頭の半角スペースやタブは無視する

133
名前は開発中のものです。[sage]   投稿日:2016/11/02 15:11:48  ID:C/+BZRXz.net(2)
途中で書き込んでしまったけど、そういうわけでコード書くときは全角スペース使って見やすく書いて

134
名前は開発中のものです。[sage]   投稿日:2016/11/02 15:50:25  ID:/aW+4m+D.net(3)
if(itemstorage[itemid]<99){
  itemstorage[itemid]++;
  takarabakoOpenFlag[takaraID]=1;
}else{
  JISAKU_serihu(1,"これ以上持てない",0);//最初の引数がしゃべるキャラ、最後のは吹き出しの形のタイプ指定
}
複数行にまたがってる部分はここだけです
後は本当に変数に代入してるだけというか…

135
名前は開発中のものです。[sage]   投稿日:2016/11/02 15:53:23  ID:22j5AZ4g.net
>131
データにしやすいパターンやお約束のイベントだけをデータベース化して
特殊処理はそのままハードコートでいいんじゃねぇの
「これをデータ化したら本当に効率化されるのだろうか」と考えて
非効率になりそうだったらハードコートのまま
そんなことよりもっとプレイヤーから見て喜んでもらえることに意識を集中したほうがいい

136
名前は開発中のものです。[sage]   投稿日:2016/11/02 17:31:46  ID:mreiywNQ.net(2)
&#160;あ
この板Unicode参照出来なかった?

137
名前は開発中のものです。[sage]   投稿日:2016/11/02 17:32:02  ID:mreiywNQ.net(2)
無理か
VIPなら出来るのに

138
名前は開発中のものです。[sage]   投稿日:2016/11/09 13:59:08  ID:DtsDG8yY.net
3Dゲームでマウスをクリックした位置にある3Dモデルをできるだけ高速に取得したいのですが、
何かいい方法はありますか?
コリジョン(衝突判定)関数がありますが、当たり判定用のメッシュを用意しないといけないようなので
ちょっと手間がかかりすぎるのでできればもっと手軽な別の方法がいいですが
コメント1件

139
名前は開発中のものです。[sage]   投稿日:2016/11/10 02:38:50  ID:woNsYOXh.net
他に方法無いやろ

140
名前は開発中のものです。[]   投稿日:2016/11/22 19:00:44  ID:4Lu6ZO/B.net
ちょっとウンコしてくる

141
名前は開発中のものです。[sage]   投稿日:2016/11/22 19:35:51  ID:amdDwmR+.net(2)
Convert Mouse Location To World Spaceでライントレースしか分からない
コメント1件

142
名前は開発中のものです。[sage]   投稿日:2016/11/22 19:38:26  ID:amdDwmR+.net(2)
>141
ue4スレと間違った

143
名前は開発中のものです。[]   投稿日:2016/12/10 02:51:28  ID:H338C5QI.net
しまった!お尻ふいてなかった

144
名前は開発中のものです。[sage]   投稿日:2016/12/10 21:12:58  ID:ijDtE922.net(2)
>138
画面描画には直接利用しないテクスチャに取得対象モデルをレンダリングしておいて判定するとか

145
名前は開発中のものです。[sage]   投稿日:2016/12/10 21:14:24  ID:ijDtE922.net(2)
とおもったら1月前かよ

146
名前は開発中のものです。[sage]   投稿日:2016/12/18 01:11:06  ID:w4mjhhpa.net(7)
初歩的なことですが、
画像を描画する際の関数の仕様について迷っています

例えば、描画系の関数をできるだけ少なくして、内部変数によってDXライブラリの描画関数を呼び分けるのがいいのか、
あるいは、描画系の関数を目的別に用意して、画面側で使い分けるのがいいか

フェードインの機能の場合、
前者なら「setModeFadeInの後、drawする」
後者なら、「drawとfadeInをそもそも別関数にする」

個人的には前者が正解のような気がしているのですが、
そもそも発想自体が間違っているのでしょうか?

御存知の方いれば、ご教授頂けると嬉しいです
コメント1件

147
名前は開発中のものです。[sage]   投稿日:2016/12/18 17:01:06  ID:g4K5bJ5s.net(2)
関数の仕様と言うよりは、抽象度とか設計とかの話なのかな?

なんとなくは分かるけど誤解してるかもしれないんで
数行程度のサンプルソースを書いてくれると嬉しい

148
名前は開発中のものです。[sage]   投稿日:2016/12/18 17:12:32  ID:GrYJvN1j.net(2)
個人的には後者の方が好き
状態が多いとバグの原因になる
コメント1件

149
名前は開発中のものです。[sage]   投稿日:2016/12/18 18:47:26  ID:w4mjhhpa.net(7)
>> 147
たしかに、「抽象度とか設計」の質問と言った方が適切かもしれません。失礼しました
具体的にいえば、以下のイメージです

■パターン1
if (ボタンが押されたら) {
画像A.setFadeIn(引数に透過速度などの更新情報);
}

画像A.draw();(透明度の加減処理。 また透過度が100以外なら、DXライブラリのSetDrawBlendModeを使うかを判定。フェードインが終わったら、内部変数のフラグを立てる)

if (画像A.IsFadeInComplete()) {
// フェードイン終わった!
}
コメント1件

150
名前は開発中のものです。[sage]   投稿日:2016/12/18 18:48:30  ID:w4mjhhpa.net(7)
■パターン2
if (ボタンが押されたら) {
グローバル変数B = true;
}

if (グローバル変数B) {
画像A.drawFadeIn(引数に透過速度などの更新情報。毎フレーム同じ情報を渡すのが違和感);

if (画像A.IsFadeInComplete()) {
// フェードイン終わった!
}

} else {
画像A.draw();
}

最初はパターン2でやっていたのですが、これだと例えば「回転とフェードインとかが同時にできない?」と思って、パターン1に変えました
すると、今後はフェードインの更新情報を画像Aに持たせたためか、あるいは、draw関数内の条件分岐が増えたせいか、処理が重くなってしまいました
この程度で重くなるのかも疑問ですが、そもそも両パターンともNGなのではと思い始めた次第です
ゲーム系プログラミングのお約束が分かってないのが、一番の原因ですが……

>148
ご教授ありがとうございます。
何がバグの原因になるとか全然分からないので、大変参考になりました

151
名前は開発中のものです。[sage]   投稿日:2016/12/18 18:53:42  ID:w4mjhhpa.net(7)
132 133 の書き込みを読むべきでした すみません……

■パターン2
if (ボタンが押されたら) {
  グローバル変数B = true;
}

if (グローバル変数B) {
  画像A.drawFadeIn(引数に透過速度などの更新情報。毎フレーム同じ情報を渡すのが違和感);

  if (画像A.IsFadeInComplete()) {
    // フェードイン終わった!
  }

} else {
  画像A.draw();
}

152
名前は開発中のものです。[sage]   投稿日:2016/12/18 19:39:00  ID:g4K5bJ5s.net(2)
グローバル変数を使うかどうかとか
複数の状態を同時に実行できない問題をどうするかとかは別として
自分なら2の方向かなあ
コメント1件

153
名前は開発中のものです。[sage]   投稿日:2016/12/18 20:00:49  ID:oO1EoBtD.net(4)
>146,>149-151
細かい点ですが、「フェードイン」とは、画像Aが透明な状態から徐々に濃く(明るく)なっていく処理をさしているのですか?
ボタンを押さないとフェードイン処理が始まらないみたいなんですが、
そもそもボタンを押してないと、画像A.draw()で何を描画してるんですか?

また画像A.IsFadeInComplete()が真になると、何が起こるんですか?
この部分は問題を説明する上で、さんぷるにふくめるひつようがあるのですか?

またなぜ151のパターン2で、わざわざグローバル変数Bをサンプルに含めているのがよくわかりません
サンプルとしては、
if (ボタンが押されたら) {
  画像A.drawFadeIn(引数に透過速度などの更新情報。毎フレーム同じ情報を渡すのが違和感);
   :
でいいんじゃないですか

仕様がいまいちイメージできません
コメント1件

154
名前は開発中のものです。[sage]   投稿日:2016/12/18 20:04:49  ID:GrYJvN1j.net(2)
あーでもグローバルじゃなくてブラシクラス作ればいいかも

155
名前は開発中のものです。[sage]   投稿日:2016/12/18 20:08:44  ID:oO1EoBtD.net(4)
質問の意図は

■パターン1
画像A.draw(ボタンが押されたか、引数に透過速度などの更新情報);//毎フレーム同じ情報を渡すのが違和感

■パターン2
f (ボタンが押されたら) {
  画像A.drawFadeIn(引数に透過速度などの更新情報);
} else {
  画像A.draw();
}

でどっち?
みたいな話かと思ったけど、ちがうのか・・・
コメント3件

156
名前は開発中のものです。[sage]   投稿日:2016/12/18 20:41:41  ID:w4mjhhpa.net(7)
>153
ごめんなさい たしかにサンプルが不適切です
この場合だとフェードインではなく、フェードアウトになります
ボタン押したら、画像が消えていくみたいな
質問の意図に関しては 155で指摘されている通りです

>155
ありがとうございます
グローバルではなく、staticなローカル変数、あるいはブラシクラスを検討してみます

ブラシクラスとなると、画像インスタンスを受け取って、内部情報を更新するという意味かな

157
名前は開発中のものです。[sage]   投稿日:2016/12/18 21:01:52  ID:w4mjhhpa.net(7)
思った以上に反応があって、ちょっと焦ってました
156の「>155」は、「>152」が正しい

154の「グローバル」の意味が把握できていないけど、たぶんグローバル変数Bのことじゃないよね
156の自分の書き込みは無茶苦茶。グローバル変数Bとブラシクラスは関係ない

とりあえず方向性は見えてきたので、ありがとうございます

158
名前は開発中のものです。[sage]   投稿日:2016/12/18 21:08:52  ID:oO1EoBtD.net(4)
流れがつかめませんが、解決したんですか

ちなみに>155でいうと、自分はパターン2派。可読性が良くなると思うから。
画像A.のdrawFadeIn()とdraw()で重複するブロックが肥大化してきたら、その重複部分をinline関数に切り出してる

しかし・・・
確かに可読性が悪いとストレスの原因になるが、
可読性を確保する労力が新たなストレスと生むというジレンマ・・・
コメント1件

159
名前は開発中のものです。[sage]   投稿日:2016/12/18 22:50:19  ID:w4mjhhpa.net(7)
>158
混乱させてしまったようで、申し訳ないです
155の意図をやっと把握しました(訂正に訂正を重ねてホンマ……)

パターン1は、どこかでフェードインの命令要求を登録した後、draw関数を呼び出します
draw関数内では、透過度の変更要求の確認、透過度の更新、および、DXライブラリ「SetDrawBlendMode」の呼び出しを行います
透過度の変更要求がない場合は、SetDrawBlendModeを使いません
なので、通常描画もフェードイン描画も一律draw関数を呼びだすことになります

パターン2は drawFadeIn とdraw を別関数にします
フェードインするときは、drawFadeInを呼び出して、引数として透過度の更新情報を渡します

結論としては、皆さん「パターン2がマシ」と仰っているので、その路線で進めようと思います
描画処理専門のブラシクラスも含めて、検討してみます

可読性に関しては、最近、可読性を確保するためのストレスに負け始めてます
重要なのは重々承知ですが、やはり面倒……
趣味なはずなのに、仕事と同様のストレスを感じる
コメント1件

160
名前は開発中のものです。[sage]   投稿日:2016/12/18 23:01:17  ID:oO1EoBtD.net(4)
>159
フェードアウトとフェードインの区別が困難になるほど、なにやら複雑な夢(野望、殺意)を秘めているみたいですね
お手柔らかにお願いします(笑)

ロベールさんのサイトによると、
inline関数は必ずしもinline展開されないみたいだけど、
誰か環境ごとに厳密に検証した人いるのかな?
自分はVC++の判断を信じてる!

161
名前は開発中のものです。[sage]   投稿日:2016/12/19 00:31:54  ID:HwJJ4Rji.net
例えば「マリオが死ぬと画面がフェードアウトして画面が切り替わる」
…という処理があるとして


■パターン1
マリオの死亡処理のところに
具体的な切替演出の設定(この場合はフェードアウト)を書くことになる。

■パターン2
マリオ死亡時にやることは
画面切替フラグを立てるだけで、死亡処理に集中することが出来る。


画面切替の演出には、画面がどんどん暗くなる「フェードアウト」だけでなく、
真っ白になったり(ホワイトアウト)、ワイプしたり色んな演出パターンが考えられる。
実際にやるかどうかは別としてね。

そうなると、画面切替処理は独立させておいたほうが取り回しが良くなるのではないか?
というのがオイラの考える2のメリットかな。
コメント1件

162
名前は開発中のものです。[sage]   投稿日:2016/12/19 16:22:26  ID:9RjupL+U.net
状態に対して××モードと名前をつけて
上手くハマるならそれを使えばいいよ
コメント1件

163
名前は開発中のものです。[sage]   投稿日:2016/12/19 23:36:24  ID:ABRexmh1.net
>161
わかりやすい例え、ありがとう
まさにそういう事例を想定していたので、とても参考になります

>162
了解です

164
名前は開発中のものです。[sage]   投稿日:2017/01/08 23:39:08  ID:3fqQn8Jq.net
久しぶりにDXライブラリ使ってたんだけど、文字入力して変換しようとするとIMEの変換候補がゲームウィンドウの左下に表示される。
ちなみにGoogleIMEでは左下でMicrosoftIMEは右下。
昔触ったときは文字の入力した文字のすぐそばに表示されてた気がするんだけどWin10(Win8?)から仕様が変わったんだろうか。
ぐぐったらWin8でIMEウィンドウ自体が出ない不具合があってそれは解消されたようなんだが。

165
名前は開発中のものです。[sage]   投稿日:2017/01/13 09:20:03  ID:JxeCTkK7.net(2)
文字入力といえば自作のアクションゲームで名前入力辞めマスタ
よーく考えるとユーザー自身しかしないだろうし

166
名前は開発中のものです。[sage]   投稿日:2017/01/13 09:22:32  ID:JxeCTkK7.net(2)
キーのログをとってmovieみたいに再現できる機能も省略
今なら動画をとろうと思えばキャプチャソフトを使えばよいし

楽になった分、今度こそ完成に近づくと良いけど

167
106[sage]   投稿日:2017/01/17 15:54:13  ID:aj0DNk7d.net
スレに残しておきたいと感じた情報を書いておきます

>106で沸いた疑問を縦800ピクセルの画像で比較検証したところですが
DrawRectGraphで一列ずつ描画するのと
SetDrawAreaで描画できる範囲を一列ずつ変更しながら描画するのでは

比べるのがおこがましいくらい
DrawRectGraphで一列ずつ描画する方が
軽かったという検証結果が出ました
12倍くらいの差がありましたので、10倍以上違うのは確実だと思います

ここまで違うのならどんな環境でもDrawRectGraphの方が良いのは確実なんじゃないかと思います
ラスタースクロールをシェーダ使わずに実装するならDrawRectGraphが良いです

以上、報告終わり
コメント1件

168
名前は開発中のものです。[sage]   投稿日:2017/01/29 19:37:06  ID:rdbqqXVO.net
>167
SetDrawAreaを使うと連続描画が途切れるからね

169
名前は開発中のものです。[sage]   投稿日:2017/01/30 18:28:11  ID:2zIjyMmQ.net
Delayフレーム後にSoundHandleを指定の音量パン周波数で再生する
SoundEffect(int SoundHandle,int VolumePal,int PanPal,int FrequencyPal,int Delay)

こんな関数を作りたいんだけど実装方法が思いつかない
SetSoundCurrentTimeでマイナスの値を設定出来たら簡単なのに

170
名前は開発中のものです。[sage]   投稿日:2017/02/16 01:43:45  ID:vIVM03On.net
マイクから入力される音声のdBを
監視するアプリって作れますか?
更新情報
・スレッド一覧ページで過去ログのタイトル検索・一覧表示ができるようになりました(2016/1/20)
NGワード登録
登録する
スレッド内検索

ゲ製作技術板 タイトル検索

このスレッドが人気です(実況系)
土曜プレミアム・ENGEIグランドスラム★15 (700)フジ実況
日本人の3割しか知らないこと くりぃむしちゅーのハナタカ!優越館★2 (843)テレ朝実況
科捜研の女 #15★1 (818)テレ朝実況
【マタ-リ】科捜研の女 #15☆1 (203)テレ朝実況
【マターリ】ENGEIグランドスラム★3 (404)フジ実況
実況 ◆ テレビ朝日 46983 ゆえだらけ (619)テレ朝実況
【バズリズム】 Perfume専用 (429)NTV実況
【マターリ】青の祓魔師 京都不浄王篇 第7話→昭和元禄落語心中−助六再び篇− 第七話 (498)TBS実況
このスレッドが人気です(ニュース系)
【森友学園】安倍夫人、名誉校長辞任 安倍首相「寄付を募る紙を見て私も驚愕した。断っているのに名前を使われ遺憾だ」★45 (428)ニュー速+
【森友学園】安倍夫人、名誉校長辞任 安倍首相「寄付を募る紙を見て私も驚愕した。断っているのに名前を使われ遺憾だ」★44 (1001)ニュー速+
【森友学園】安倍夫人、名誉校長辞任 安倍首相「寄付を募る紙を見て私も驚愕した。断っているのに名前を使われ遺憾だ」★43 (919)ニュー速+
【社会】嫌がらせが続く塚本幼稚園「民団から抗議文」「マスコミから恫喝」 (1000)ニュー速+
【森友学園】安倍夫人、名誉校長辞任 安倍首相「寄付を募る紙を見て私も驚愕した。断っているのに名前を使われ遺憾だ」★42 (1000)ニュー速+
【社会】嫌がらせが続く塚本幼稚園「民団から抗議文」「マスコミから恫喝」★2 (138)ニュー速+
【国際】トランプ「演説の語彙力」は、ほんとうに低かった:研究結果 語彙は6年生レヴェル 比較対象のうち最も低い (996)ニュー速+
【宮崎】「会いたかった」日南市長(37)、20代女性職員宛てラインを市職員50人に誤送信 ネットに拡散★13 (849)ニュー速+
ゲ製作技術板の人気スレ
自作ゲーム開発者たちのメンバー募集 (797)
RPGツクールMV総合 22作目 (966)
製作者スレ SRPG Studio 21章 (325)
【3Dゲームエンジン】Unity総合スレッド29 (603)
【ウディタ】WOLF RPGエディター 其の63 (815)
【3Dゲームエンジン】Unity質問スレッド28 [無断転載禁止]&#169;2ch.net (516)
【SGB】smile game builder【スマビ】 2枚目 (324)
【ウディタ】WOLF RPGエディター 其の62 (1029)
『Clickteam Fusion/Multimedia Fusion』 16 [無断転載禁止]&#169;2ch.net (511)
【ストア】ステマ業者の銭のタネ“登録料ビジネス”って?・技術板【stema】 (764)
【UE4】Unreal Engine 4 part5 (986)
Unityで凄いゲーム作りたい誰か作り方教えて! (266)
WOLF RPGエディター 質問スレ 其の10 (756)
ニート、無職、フリーターがゲームを作るスレ 22 (1176)
【UE4】Unreal Engine 4 初心者質問スレッド part3 (179)
個人製作ゲームはなぜ売れないのか Part.2 (960)
『Clickteam Fusion/Multimedia Fusion』 15 (1012)
SRPG Studio 5章 (1043)
プログラミングできる人 来て(ヽ゚д)クレ   (336)
ゆめにっきっぽいゲームを作るスレ 14部屋目 (992)
『Clickteam Fusion/Multimedia Fusion』 14 (995)
ニート、無職、フリーターがゲームを作るスレ 15 (1017)
【3Dゲームエンジン】Unity質問スレッド17 (1011)
ニート、無職、フリーターがゲームを作るスレ 16 (1012)
ニィト・無色:フリィタァがゲーム制作するスレ (678)
■自主製作ゲーム:開発状況報告スレVer1.2■ (1017)
【3Dゲームエンジン】Unity質問スレッド15 (1022)
このサイトについて
このサイトは2ちゃんねるからデータを取得し、表示するサービスです。
画像のインライン表示機能について
画像のURLの後ろにある[画像をインライン表示]をクリックすると、URLの下に表示します。
表示される画像は横幅100pxに縮小されていて、クリックすると原寸で表示します。
このサイトの特徴
1)スレッド内検索ができます
2)レス(「>>1」など)のポップアップができます
3)不適切な言葉を含む投稿を表示しません
4)ページ内で画像を直接表示できます
5)2ch他スレッドへのリンクはタイトル・板名つきでリンクします
6)すっきりとしたデザインで表示します
7)最新スレや前スレをチェック・一覧表示します
8)NGワード機能の搭載でイヤな言葉が目に入りません
9)荒らしを自動チェックします
10)スレッド内・同一IDの書き込みだけ表示できます
11)レスの返事をレスされた発言の下に表示する「まとめビュー」が利用できます
12)シリーズ化したスレッドの一覧を表示します
13)最新のスレッドがある場合はお知らせします
削除について
こちらをご覧ください
機能要望について
現在機能要望受付中です。
問い合わせについて
こちらのページからどうぞ
Amazon


このサイトは2ch.scからデータを取得・表示しています。削除などについてはこちらをご覧ください。 アクセスモード:差分取得 - 新着書き込みなし(304)