DXライブラリ 総合スレッド その19 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2016/01/05(火) 23:44:29.77ID:fkNSYSkc
Cを習得した程度のスキルでも、ゲームのグラフィックを比較的容易に描画する事のできる、
「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

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

【関連スレ】
C/C++ゲーム製作総合スレッド Part7 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/gamedev/1420939171/
ゲームプログラムなら俺に聞け32(c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1441693570/

●DXライブラリではなくDirectXの質問ならこっちへ
【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1418438785/
2016/10/16(日) 21:02:14.27ID:ldA8bGPF
テクスチャ切り替えはコスト大きいからね
2016/10/23(日) 23:02:40.45ID:t2BOiWAY
>>109
 使ってみたら、ほんとにスゴイですね。
 時代がCDDAやストリーミング再生になってもう無限ループは無理なのかなーとか思っていたのだけど。
 ただWAVEで成功したのでそのデータをMP3にしたら、上手く繋がらなくなっちゃった。
 もう少しデータの作り方工夫すれば上手く行くのだろうけど。
2016/10/24(月) 06:53:24.03ID:YwSDnTaO
>>114
MP3はこの関数に限らずループの時に違和感が出ると言われてるから
たぶんMP3の仕様の問題もあると思う

ogg形式では上手くいったよ
ただ変換の時にビットレートを固定したファイルでしか検証してないから
可変ビットレートの方法で圧縮されたoggファイルで上手くいくかは未検証
2016/10/24(月) 12:40:43.17ID:GmlKA2wN
MP3は権利の問題があるから他の使えって言われてた時期があったね
2016/10/24(月) 13:10:36.88ID:Y2gOrRK8
権利よりも仕様が問題だな
MP3は無音が挿入されたり余計なことされる場合が多いからゲームに使うようなもんじゃない

他の環境では手抜き実装でWindowsの再生機能に丸投げできるメリットがあるが、DXライブラリなら関係ないし
2016/10/24(月) 23:43:54.13ID:UrCtC7CV
ループできないからだったか、昔は
DXライブラリではogg使うなとかもあったね
2016/10/27(木) 13:49:28.51ID:1Lorx2LL
昔は BGMにはmp3, 効果音にはwav だったでしょ
2016/10/27(木) 15:57:58.01ID:HwaxCMEV
116の言う通りmp3はライセンス関係が危ないということで避けられoggが推奨されていた
仕様よりもこっちのほうが重大問題
ゲーム制作関係でmp3推奨というのは聞いたことがない
2016/10/27(木) 17:43:02.40ID:rFz+rXeH
MP3登場時にはoggなんてなかったから
Wavよりファイルサイズの小さいMP3を推奨する風潮はあったと思うけど
2016/10/27(木) 18:10:43.67ID:HwaxCMEV
ogg普及前はソフトウェアMIDIが多かった
もしmp3が主流だったと思う人がいたら、その人のいた界隈はライセンス関係の意識が薄かったんだよ
まぁ00年代前半まではそういう時期でもあったけど
2016/10/27(木) 20:01:09.28ID:lueiMAyc
市販のゲームで5000本以上販売が課金の条件だったから、フリーゲームや小規模同人では普通に使われてたよ
2016/10/27(木) 20:28:51.91ID:BuMiN4CL
制作中のゲームにはキャラの髪型や服や装備や小物を変えるキャラメイキング(着替え)の機能があって、
今はひとつのMV1ファイルにまとめておき、フレーム表示/非表示で切り替えてるのですが、
だんだんアイテムが増えてきてファイルが大きくなってしまったので
別の方法をとりたいのですが、
キャラメイキングや着替えを実装するのに何かいい方法ありませんか?
髪型や服や装備や小物ごとにXファイルでバラバラにしておいて、Xファイルをテキスト結合するのが
楽なのではないかと思っていますが、もっと良い方法ありませんか?
2016/10/31(月) 19:03:23.01ID:X+KVjoNa
DXライブラリのユーザーが作ってるのって
2Dゲーと3Dゲーのどっちが多いんだろ?
俺は3Dには手が出せてないんだけど
2016/10/31(月) 19:10:44.78ID:8dsRDt6U
2D
2016/11/01(火) 22:09:07.08ID:kJ7Uoghc
3Dは海外のゲームエンジンが無料化されてしまったので、
3Dゲーム制作者はそっちへ行ってしまった気がする
2Dだとどれもあんまり変わらない気がするが
2016/11/01(火) 22:26:25.51ID:+8ot24fl
2Dも描画しかないDXライブラリよりもオブジェクト管理出来たりするエンジンに流れている気がする
2016/11/02(水) 07:20:39.55ID:/aW+4m+D
全部コードに直書きする形でならなんとか自分の思う通りに作れるようになったとは思うんだけど
さすがに会話イベント一個追加したり、マップに壺一個追加しただけで再コンパイルする必要がある状況って
なんというか我ながらアホだよね

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

とりあえず思いついてるやり方は
セリフ表示とか効果音を鳴らすとかのイベント処理を担っている関数に番号振って引数の数を紐付けしておいて
イベントの内容を全部、関数の番号、引数の数、引数の数値…って数字だけのデータにして
そのデータを読み込んで、どの関数を呼び出し引数にはどんな数値を入れるかを判断して実行する関数を作り
イベントの内容を全部数値に置き換える方法なんですけど
2016/11/02(水) 08:13:58.60ID:8LrVjVrS
>>129
自分でも気付いてる通り、基本原則はコードとリソースを分離すること。

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


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

各クラスの書き方、各ファイルの依存関係なんかを整頓することで、
ちょっと修正したくらいなら、長時間のビルドを要さなくなる。
2016/11/02(水) 13:45:37.24ID:/aW+4m+D
大体の方向性はこんな感じでいいんだということであれば進めていきたいんですが
躊躇している理由が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);//最初の引数がしゃべるキャラ、最後のは吹き出しの形のタイプ指定
}
みたいに作ってるイベントの条件分岐の部分の外部への出力方法が思いつかないっていう問題点もあります

なんかこう、こんな低レベルな人間にもできる上手いやり方ありませんかね?
2016/11/02(水) 15:10:54.49ID:C/+BZRXz
2chは行頭の半角スペースやタブは無視する
2016/11/02(水) 15:11:48.53ID:C/+BZRXz
途中で書き込んでしまったけど、そういうわけでコード書くときは全角スペース使って見やすく書いて
2016/11/02(水) 15:50:25.87ID:/aW+4m+D
if(itemstorage[itemid]<99){
  itemstorage[itemid]++;
  takarabakoOpenFlag[takaraID]=1;
}else{
  JISAKU_serihu(1,"これ以上持てない",0);//最初の引数がしゃべるキャラ、最後のは吹き出しの形のタイプ指定
}
複数行にまたがってる部分はここだけです
後は本当に変数に代入してるだけというか…
2016/11/02(水) 15:53:23.25ID:22j5AZ4g
>>131
データにしやすいパターンやお約束のイベントだけをデータベース化して
特殊処理はそのままハードコートでいいんじゃねぇの
「これをデータ化したら本当に効率化されるのだろうか」と考えて
非効率になりそうだったらハードコートのまま
そんなことよりもっとプレイヤーから見て喜んでもらえることに意識を集中したほうがいい
2016/11/02(水) 17:31:46.86ID:mreiywNQ
&#160;あ
この板Unicode参照出来なかった?
2016/11/02(水) 17:32:02.03ID:mreiywNQ
無理か
VIPなら出来るのに
2016/11/09(水) 13:59:08.62ID:DtsDG8yY
3Dゲームでマウスをクリックした位置にある3Dモデルをできるだけ高速に取得したいのですが、
何かいい方法はありますか?
コリジョン(衝突判定)関数がありますが、当たり判定用のメッシュを用意しないといけないようなので
ちょっと手間がかかりすぎるのでできればもっと手軽な別の方法がいいですが
2016/11/10(木) 02:38:50.44ID:woNsYOXh
他に方法無いやろ
140名前は開発中のものです。
垢版 |
2016/11/22(火) 19:00:44.40ID:4Lu6ZO/B
ちょっとウンコしてくる
2016/11/22(火) 19:35:51.98ID:amdDwmR+
Convert Mouse Location To World Spaceでライントレースしか分からない
2016/11/22(火) 19:38:26.07ID:amdDwmR+
>>141
ue4スレと間違った
143名前は開発中のものです。
垢版 |
2016/12/10(土) 02:51:28.41ID:H338C5QI
しまった!お尻ふいてなかった
2016/12/10(土) 21:12:58.27ID:ijDtE922
>>138
画面描画には直接利用しないテクスチャに取得対象モデルをレンダリングしておいて判定するとか
2016/12/10(土) 21:14:24.90ID:ijDtE922
とおもったら1月前かよ
2016/12/18(日) 01:11:06.45ID:w4mjhhpa
初歩的なことですが、
画像を描画する際の関数の仕様について迷っています

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

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

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

御存知の方いれば、ご教授頂けると嬉しいです
2016/12/18(日) 17:01:06.63ID:g4K5bJ5s
関数の仕様と言うよりは、抽象度とか設計とかの話なのかな?

なんとなくは分かるけど誤解してるかもしれないんで
数行程度のサンプルソースを書いてくれると嬉しい
2016/12/18(日) 17:12:32.47ID:GrYJvN1j
個人的には後者の方が好き
状態が多いとバグの原因になる
2016/12/18(日) 18:47:26.76ID:w4mjhhpa
>> 147
たしかに、「抽象度とか設計」の質問と言った方が適切かもしれません。失礼しました
具体的にいえば、以下のイメージです

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

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

if (画像A.IsFadeInComplete()) {
// フェードイン終わった!
}
2016/12/18(日) 18:48:30.96ID:w4mjhhpa
■パターン2
if (ボタンが押されたら) {
グローバル変数B = true;
}

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

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

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

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

>>148
ご教授ありがとうございます。
何がバグの原因になるとか全然分からないので、大変参考になりました
2016/12/18(日) 18:53:42.88ID:w4mjhhpa
132 133 の書き込みを読むべきでした すみません……

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

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

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

} else {
  画像A.draw();
}
2016/12/18(日) 19:39:00.88ID:g4K5bJ5s
グローバル変数を使うかどうかとか
複数の状態を同時に実行できない問題をどうするかとかは別として
自分なら2の方向かなあ
2016/12/18(日) 20:00:49.02ID:oO1EoBtD
>>146,>>149-151
細かい点ですが、「フェードイン」とは、画像Aが透明な状態から徐々に濃く(明るく)なっていく処理をさしているのですか?
ボタンを押さないとフェードイン処理が始まらないみたいなんですが、
そもそもボタンを押してないと、画像A.draw()で何を描画してるんですか?

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

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

仕様がいまいちイメージできません
2016/12/18(日) 20:04:49.88ID:GrYJvN1j
あーでもグローバルじゃなくてブラシクラス作ればいいかも
2016/12/18(日) 20:08:44.65ID:oO1EoBtD
質問の意図は

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

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

でどっち?
みたいな話かと思ったけど、ちがうのか・・・
2016/12/18(日) 20:41:41.19ID:w4mjhhpa
>>153
ごめんなさい たしかにサンプルが不適切です
この場合だとフェードインではなく、フェードアウトになります
ボタン押したら、画像が消えていくみたいな
質問の意図に関しては 155で指摘されている通りです

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

ブラシクラスとなると、画像インスタンスを受け取って、内部情報を更新するという意味かな
2016/12/18(日) 21:01:52.62ID:w4mjhhpa
思った以上に反応があって、ちょっと焦ってました
156の「>>155」は、「>>152」が正しい

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

とりあえず方向性は見えてきたので、ありがとうございます
2016/12/18(日) 21:08:52.00ID:oO1EoBtD
流れがつかめませんが、解決したんですか

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

しかし・・・
確かに可読性が悪いとストレスの原因になるが、
可読性を確保する労力が新たなストレスと生むというジレンマ・・・
2016/12/18(日) 22:50:19.71ID:w4mjhhpa
>>158
混乱させてしまったようで、申し訳ないです
155の意図をやっと把握しました(訂正に訂正を重ねてホンマ……)

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

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

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

可読性に関しては、最近、可読性を確保するためのストレスに負け始めてます
重要なのは重々承知ですが、やはり面倒……
趣味なはずなのに、仕事と同様のストレスを感じる
2016/12/18(日) 23:01:17.32ID:oO1EoBtD
>>159
フェードアウトとフェードインの区別が困難になるほど、なにやら複雑な夢(野望、殺意)を秘めているみたいですね
お手柔らかにお願いします(笑)

ロベールさんのサイトによると、
inline関数は必ずしもinline展開されないみたいだけど、
誰か環境ごとに厳密に検証した人いるのかな?
自分はVC++の判断を信じてる!
2016/12/19(月) 00:31:54.60ID:HwJJ4Rji
例えば「マリオが死ぬと画面がフェードアウトして画面が切り替わる」
…という処理があるとして


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

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


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

そうなると、画面切替処理は独立させておいたほうが取り回しが良くなるのではないか?
というのがオイラの考える2のメリットかな。
2016/12/19(月) 16:22:26.13ID:9RjupL+U
状態に対して××モードと名前をつけて
上手くハマるならそれを使えばいいよ
2016/12/19(月) 23:36:24.22ID:ABRexmh1
>>161
わかりやすい例え、ありがとう
まさにそういう事例を想定していたので、とても参考になります

>>162
了解です
2017/01/08(日) 23:39:08.63ID:3fqQn8Jq
久しぶりにDXライブラリ使ってたんだけど、文字入力して変換しようとするとIMEの変換候補がゲームウィンドウの左下に表示される。
ちなみにGoogleIMEでは左下でMicrosoftIMEは右下。
昔触ったときは文字の入力した文字のすぐそばに表示されてた気がするんだけどWin10(Win8?)から仕様が変わったんだろうか。
ぐぐったらWin8でIMEウィンドウ自体が出ない不具合があってそれは解消されたようなんだが。
2017/01/13(金) 09:20:03.69ID:JxeCTkK7
文字入力といえば自作のアクションゲームで名前入力辞めマスタ
よーく考えるとユーザー自身しかしないだろうし
2017/01/13(金) 09:22:32.67ID:JxeCTkK7
キーのログをとってmovieみたいに再現できる機能も省略
今なら動画をとろうと思えばキャプチャソフトを使えばよいし

楽になった分、今度こそ完成に近づくと良いけど
167106
垢版 |
2017/01/17(火) 15:54:13.99ID:aj0DNk7d
スレに残しておきたいと感じた情報を書いておきます

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

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

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

以上、報告終わり
2017/01/29(日) 19:37:06.79ID:rdbqqXVO
>>167
SetDrawAreaを使うと連続描画が途切れるからね
2017/01/30(月) 18:28:11.60ID:2zIjyMmQ
Delayフレーム後にSoundHandleを指定の音量パン周波数で再生する
SoundEffect(int SoundHandle,int VolumePal,int PanPal,int FrequencyPal,int Delay)

こんな関数を作りたいんだけど実装方法が思いつかない
SetSoundCurrentTimeでマイナスの値を設定出来たら簡単なのに
2017/02/16(木) 01:43:45.04ID:vIVM03On
マイクから入力される音声のdBを
監視するアプリって作れますか?
171名前は開発中のものです。
垢版 |
2017/02/26(日) 02:54:28.23ID:NkbyLrdK
DX11対応の環境でサンプルプログラムをコンパイルし実行したらDX11で動いていましたが
この.exeをDX11非対応の環境で実行するとDX9などで動くんですか?

手元にDX11非対応の環境が無くて試せないんですが2Dゲーを作る分には特に気にしなくても大丈夫なんでしょうか
2017/02/26(日) 02:56:31.45ID:NkbyLrdK
sage忘れ失礼しました
2017/02/26(日) 04:39:50.74ID:cv+wlHl/
オリジナルシェーダ使ってなければ問題ないはず
2017/02/26(日) 11:18:23.14ID:SbF7UdV7
Android対応のDXライブラリが公開されたようだね
Unityやcocos2dと比べるとメリットがあまりないのがアレだけど
(DX11対応みたいに中途半端になりそうなところがまたね……)
2017/02/26(日) 11:24:07.56ID:SbF7UdV7
>>171
DX11でつくるのなら
DXライブラリは、DX11の機能のテッセレーションやジオメトリシェーダー
コンピュートシェーダーなど対応していないからあまりオススメしないぞい
2017/02/26(日) 18:26:14.24ID:w1YArNR6
android対応dxライブラリマジやがw
ちょっとスマホゲー作りたくなってきた・・・
2017/02/26(日) 23:50:04.99ID:UgWHSXy5
ゲームエンジンで実機デバックしてたから
VS2015の実機デバックがそのまま使える
DXライブラリのプログラムも実機でみれて楽しい
178名前は開発中のものです。
垢版 |
2017/02/27(月) 17:14:55.41ID:HzyfcOK5
Android対応まじだったw
前に誰かがcocos2dでやってたの使ってみたんだけど
まともに動かんかったから公式で対応してくれるのはでかい
帰ったら自作ゲームを移植してみよう
2017/02/27(月) 19:38:03.31ID:yzmBThPX
個人開発なのにそんなに手広くやって大丈夫なんだろか。
良い人である以上に人が良すぎてサポートで死にますよ。
2017/02/27(月) 19:49:51.98ID:LeUk6F53
OSSだしgithubで開発すれば良いのに
181名前は開発中のものです。
垢版 |
2017/02/27(月) 19:50:11.47ID:hCixZHbE
dxライブラリのあり方としての謎が深まる
2017/02/28(火) 00:19:17.26ID:VdUT2lLZ
つかVS2015がandroid対応していたことに驚き
2017/02/28(火) 01:06:31.48ID:kAgsABkj
今MSはマルチプラットフォームに必死だからね
Win10でBash使えるようにしたりLinuxにVisual Studioのコードエディタを公開したりと

1番驚いたのはThe&#160;Linux&#160;FoundationにMSが入った事だな
2017/02/28(火) 01:07:15.70ID:kAgsABkj
ごめんスペースだと思ってコピペしたのが文字化けしてる
The Linux Foundationね
2017/02/28(火) 01:27:32.13ID:VdUT2lLZ
試しにやってみたけど最後の実行が出来なかったorz
もう寝る
2017/02/28(火) 14:20:17.58ID:9MuOvNLS
Android版をタブレットのC4droidでやってみたけどライブラリの中でエラー吐くみたいだ
大量のエラー吐くからさっぱり分かんないや
"ANative_Activity_onCreate"が" android_native_app_glue.h "と衝突して多重宣言しているとかなんとかから始まってBulletやOgg周りで参照エラーが出てる
2017/03/05(日) 18:50:00.02ID:WYpdMPcL
DrawLine関数の挙動がPCごとに違う?なんかサブのノーパソで動かすと下に1ドットずれる
両方Directxのバージョン11以降だからそこ辛味じゃないと思うんだけど…
2017/03/11(土) 14:58:07.56ID:4brvAqUP
もう何年も前に、
ハードウェア描画は1ドットずれたりする場合があるだの
3Dのものを画面に映す(2Dに変換する)際に誤差が生じるだの
聞いたことあるけど、流石にそれは関係ないかしらね…
2017/03/16(木) 07:40:17.58ID:06c/uHW3
座標の扱いはビデオカードごとに違うからね
古いオンボードだと0.5pxずれたりする
2017/03/19(日) 15:23:34.43ID:85gVo7Ly
2dで影作るときってどうすればいいんだ
アルファ乗算の値下げながらDrawLineをずらして何本も描画していくのを思いついたけど絶対糞重くなるでしょ
2017/03/19(日) 17:46:24.06ID:McAdhrov
影の形にこだわらなければいいんでないかい
2017/03/19(日) 17:59:49.08ID:iXKgNie2
影ってどういう影なのか分からんけど
例えばスプライトのキャラに影つけるならキャラの形の白黒画像用意してDrawModiGraphで乗算合成とかじゃね
2017/03/20(月) 14:37:04.24ID:PJ3OOU/G
スプライト底辺に黒い楕円置くだけやろ
それでアクションやマップ作成に支障が出るなら
潔く影なんて捨てる
2017/04/09(日) 22:25:04.02ID:Fu+0leN1
マウスの入力についての質問です

マウスのサイドボタンの検出はDXライブラリではできないのでしょうか?
調べてみても、サイドボタンがXButton1とかXButton2と呼ばれていることしか得られませんでした

こう記述すればできるとか、DXライブラリ以外の実装方法があるとかあれば教えてください
よろしくお願いします
2017/04/09(日) 22:43:19.29ID:A8iwvjAh
GetMouseInput()じゃダメなの?
2017/04/09(日) 22:53:28.69ID:Fu+0leN1
>>195
公式リファレンスを見ながらGetMouseInput()の引数を全部試しましたが、どれを使っても検出されませんでした
ブラウザでサイドボタンを使って戻る進むができてるので、自分のサイドボタンが壊れている可能性はないです
2017/04/09(日) 23:58:01.43ID:gIO/ILx4
>>196
ttp://dxlib.o.oo7.jp/function/dxfunc_input.html#R5N8
ここ見る限り、GetMouseInputで値取れないってことは
逆にマウスのサイドボタンがキーボードのフックで対処してるタイプかもしれない。
例えば、キーボードのBackSpaceで「戻る」、Shift+BackSpaceで「進む」を表現してるとか。

ttp://dxlib.o.oo7.jp/cgi/patiobbs/patio.cgi?mode=past&no=2247
後は関数自体の使い方に問題があるかもしれないので
ここで管理人さんが掲示してる最初のソースコードを試してみるとか。
情報が古いので今も使えるかわからないけど。
198194です
垢版 |
2017/04/10(月) 00:31:27.44ID:Yp/MHnmL
>>197
ふたつのURLを見て試してみましたが検出されませんでした
さらにCheckHitKeyAll()も試してみましたが、これでもサイドボタンは検出されませんでした

ふたつ目のURLのように、もしかしたら実装されていない機能なのかもしれないです
DXライブラリ製作者さんの掲示板に質問・お願いしてみることにします

>>195 >>197 さん、どうもありがとうございました
199194です
垢版 |
2017/04/11(火) 01:56:20.31ID:upA/YOkc
サイドボタンの検出の件ですが、無事解決しました
自分と同じようなことで悩んでいる/いた方のために書き残しておきます

簡単に言うと、サイドボタンの検出をするにはDXライブラリをバージョンアップする必要があるようです
以下のやり取りを見ていただければ、詳しいことが得られると思います

ttp://dxlib.o.oo7.jp/cgi/patiobbs/patio.cgi?mode=view&no=4080

今回の質問に関わってくださった皆様、改めてありがとうございました
2017/04/12(水) 01:50:35.12ID:TuryebQE
白地に(アンチエイリアスかかった)黒のアイコンを表示してるんですが
これの白地を別の色にすると白地前提のアンチエイリアスが汚くなってしまいます。
白地に黒アイコンのものにアルファブレンドをかけると今度は黒が薄く見えなくなってしまう。。
Dxライブラリの知識ではないかもしれませんが、これを解決する手法のヒントなどありますでしょうか?
2017/04/12(水) 02:02:34.21ID:TuryebQE
ごめんなさい書いた直後に自己解決してしまった
やっぱりよく調べて書くべきですね・・・
2017/04/14(金) 21:46:05.15ID:bZxpbzr7
DXライブラリに関連してるかどうかわかりませんが
わからないことを質問してみます。

ファイナルファンタジー14(以下、FF14と略)などのプロが開発したゲームを拝見するとロード時間が短いように感じます
例えばDXライブラリを使って約14,000KBぐらいのMP3ファイルをロードしてメモリに読み込むようにコードを書くと
MP3ファイルのロードが完了するまでにコンマ数秒のロード時間が発生します

ですが、FF14のタイトル画面でしばらく放置するとプロローグムービーが開始されるわけですが、
内容を見る限り明らかに容量の多いムービーファイルをロードして再生してるように見えるのですが、
実際、FF14のゲームを起動してタイトル画面に移行するまでの時間は僅かです

私からの質問は、大容量のファイルをロードする場合に
ロード時間を短く済ませるための技術です
DXライブラリでゲーム開発をしてるのでDXライブラリを使用してのお知恵を拝借したい
2017/04/14(金) 22:21:37.18ID:7sRUbSV9
効果音ではなく曲を全部メモリにロードするのは間違ってる
ファイルサイズの大きい曲や動画は読み込みながら再生するのが基本
そうじゃないと100GBの動画とかメモリに入りきらないようなものは再生できない
2017/04/14(金) 22:38:34.80ID:bZxpbzr7
なるほど、必ずしもメモリにロードしてから再生しなくてもいいという考え方なのか
直接HDDからファイルをメモリーにロードしながら再生(ストリーミング再生)するわけか、
俺は大容量のファイルを分割でメモリに読み込んで
1ループのロード時間を短くする方向で考えていた
2017/04/14(金) 23:52:44.66ID:7sRUbSV9
分かりやすく例えると、oggとかmp4なんかはzipで圧縮したような形式だから
再生するために元のwavに解凍すると10倍〜100倍になる
メモリにロードするってことは、この巨大化したのを入れるってことだから
効果音のような小さなものでない限りは避けるべき
2017/04/15(土) 01:19:09.73ID:RtlOPePd
ありがとう
おかげで疑問が解消されました
2017/04/15(土) 03:44:15.65ID:3FEYykSP
あとはシングルスレッドの場合はどうしてもロード時に固まってしまうだろうから、マルチスレッドでロードを行うようにするのはどうだろうか?
2017/04/15(土) 04:40:43.98ID:RtlOPePd
マルチスレッドということはC++11を扱うということですね
Core i7を乗せてるのでCore UPUに対応したゲーム開発も興味はあるが
技術的に敷居が少し高いので今はまだいいかな
最新のC++コンパイラも必要になるし
ゲームのプレイヤーがCore i7 や Core i5のCPUを乗せてないと威力は発揮されない
2017/04/15(土) 09:19:30.20ID:+pklgBp/
短い場合(メモリー上にwave展開しない)
SetCreateSoundDataType( DX_SOUNDDATATYPE_MEMPRESS );
長い場合(ストリーミング再生)
SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE );
どちらか書く
2017/04/15(土) 09:44:18.23ID:+pklgBp/
http://jgame.blog.fc2.com/
あんたこのブログの人やろ頑張りや
2017/04/15(土) 09:52:16.21ID:PBMOYWDr
ちなみに画像や音声のマルチスレッド読み込みはDXライブラリ標準機能で
SetUseAsyncLoadFlag(TRUE)使えば簡単よ
2017/04/15(土) 11:40:04.16ID:3FEYykSP
C++11とか使ってませんが、ロード画面作るときにマルチスレッドを使いました。
あくまでロード時に凍るのを防ぐために使用するのでCPUがどうとかは無いですよ。
process.hをインクルードしてResumeThreadさせるだけで実装できます。
2017/04/15(土) 13:07:47.39ID:poy2AG7G
何故だろう、急に挙動が変わった。
sizeが0を返すからファイルが見付からない訳じゃないと思うのだけど。

void* readbin( char *filename)
{
int size ,rsize ,h;
char *ptr;

if ( size = FileRead_size( filename ) == -1 ) errmsg( NOTREAD ,filename );
ptr = (char*)malloc(size+1);
if ( h = FileRead_open( filename ) == 0 ) errmsg( NOTOPEN ,filename );
rsize=FileRead_read(ptr ,size ,h);
printfDx( "%s : %d/%d\n" ,filename ,size ,rsize );

FileRead_close( h);
return ptr;
}
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況