[過去ログ]
DXライブラリ 総合スレッド その19 [無断転載禁止]©2ch.net (1002レス)
DXライブラリ 総合スレッド その19 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
146: 名前は開発中のものです。 [sage] 2016/12/18(日) 01:11:06.45 ID:w4mjhhpa 初歩的なことですが、 画像を描画する際の関数の仕様について迷っています 例えば、描画系の関数をできるだけ少なくして、内部変数によってDXライブラリの描画関数を呼び分けるのがいいのか、 あるいは、描画系の関数を目的別に用意して、画面側で使い分けるのがいいか フェードインの機能の場合、 前者なら「setModeFadeInの後、drawする」 後者なら、「drawとfadeInをそもそも別関数にする」 個人的には前者が正解のような気がしているのですが、 そもそも発想自体が間違っているのでしょうか? 御存知の方いれば、ご教授頂けると嬉しいです http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/146
149: 名前は開発中のものです。 [sage] 2016/12/18(日) 18:47:26.76 ID:w4mjhhpa >> 147 たしかに、「抽象度とか設計」の質問と言った方が適切かもしれません。失礼しました 具体的にいえば、以下のイメージです ■パターン1 if (ボタンが押されたら) { 画像A.setFadeIn(引数に透過速度などの更新情報); } 画像A.draw();(透明度の加減処理。 また透過度が100以外なら、DXライブラリのSetDrawBlendModeを使うかを判定。フェードインが終わったら、内部変数のフラグを立てる) if (画像A.IsFadeInComplete()) { // フェードイン終わった! } http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/149
150: 名前は開発中のものです。 [sage] 2016/12/18(日) 18:48:30.96 ID:w4mjhhpa ■パターン2 if (ボタンが押されたら) { グローバル変数B = true; } if (グローバル変数B) { 画像A.drawFadeIn(引数に透過速度などの更新情報。毎フレーム同じ情報を渡すのが違和感); if (画像A.IsFadeInComplete()) { // フェードイン終わった! } } else { 画像A.draw(); } 最初はパターン2でやっていたのですが、これだと例えば「回転とフェードインとかが同時にできない?」と思って、パターン1に変えました すると、今後はフェードインの更新情報を画像Aに持たせたためか、あるいは、draw関数内の条件分岐が増えたせいか、処理が重くなってしまいました この程度で重くなるのかも疑問ですが、そもそも両パターンともNGなのではと思い始めた次第です ゲーム系プログラミングのお約束が分かってないのが、一番の原因ですが…… >>148 ご教授ありがとうございます。 何がバグの原因になるとか全然分からないので、大変参考になりました http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/150
151: 名前は開発中のものです。 [sage] 2016/12/18(日) 18:53:42.88 ID:w4mjhhpa 132 133 の書き込みを読むべきでした すみません…… ■パターン2 if (ボタンが押されたら) { グローバル変数B = true; } if (グローバル変数B) { 画像A.drawFadeIn(引数に透過速度などの更新情報。毎フレーム同じ情報を渡すのが違和感); if (画像A.IsFadeInComplete()) { // フェードイン終わった! } } else { 画像A.draw(); } http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/151
156: 名前は開発中のものです。 [sage] 2016/12/18(日) 20:41:41.19 ID:w4mjhhpa >>153 ごめんなさい たしかにサンプルが不適切です この場合だとフェードインではなく、フェードアウトになります ボタン押したら、画像が消えていくみたいな 質問の意図に関しては 155で指摘されている通りです >>155 ありがとうございます グローバルではなく、staticなローカル変数、あるいはブラシクラスを検討してみます ブラシクラスとなると、画像インスタンスを受け取って、内部情報を更新するという意味かな http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/156
157: 名前は開発中のものです。 [sage] 2016/12/18(日) 21:01:52.62 ID:w4mjhhpa 思った以上に反応があって、ちょっと焦ってました 156の「>>155」は、「>>152」が正しい 154の「グローバル」の意味が把握できていないけど、たぶんグローバル変数Bのことじゃないよね 156の自分の書き込みは無茶苦茶。グローバル変数Bとブラシクラスは関係ない とりあえず方向性は見えてきたので、ありがとうございます http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/157
159: 名前は開発中のものです。 [sage] 2016/12/18(日) 22:50:19.71 ID:w4mjhhpa >>158 混乱させてしまったようで、申し訳ないです 155の意図をやっと把握しました(訂正に訂正を重ねてホンマ……) パターン1は、どこかでフェードインの命令要求を登録した後、draw関数を呼び出します draw関数内では、透過度の変更要求の確認、透過度の更新、および、DXライブラリ「SetDrawBlendMode」の呼び出しを行います 透過度の変更要求がない場合は、SetDrawBlendModeを使いません なので、通常描画もフェードイン描画も一律draw関数を呼びだすことになります パターン2は drawFadeIn とdraw を別関数にします フェードインするときは、drawFadeInを呼び出して、引数として透過度の更新情報を渡します 結論としては、皆さん「パターン2がマシ」と仰っているので、その路線で進めようと思います 描画処理専門のブラシクラスも含めて、検討してみます 可読性に関しては、最近、可読性を確保するためのストレスに負け始めてます 重要なのは重々承知ですが、やはり面倒…… 趣味なはずなのに、仕事と同様のストレスを感じる http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/159
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.030s