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