トップページgamedev
1001コメント322KB

DXライブラリ 総合スレッド その3

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2009/03/31(火) 01:14:36ID:IgyJcgap
Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。

DXライブラリの詳細ついては
http://homepage2.nifty.com/natupaji/DxLib/
を参照して頂きたい。

DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

過去スレ:DXライブラリ 総合スレッド
      http://pc11.2ch.net/test/read.cgi/gamedev/1197468399/
     DXライブラリ 総合スレッド 2008
      http://pc11.2ch.net/test/read.cgi/gamedev/1224923873/
0070名前は開発中のものです。2009/04/05(日) 18:09:44ID:oraQAGe0
>69
サンプルプログラムのパーティクル基本が参考になると思われ。
0071名前は開発中のものです。2009/04/05(日) 18:12:03ID:8VF6BH4E
>>70
ありがとうございます!
0072名前は開発中のものです。2009/04/05(日) 21:16:09ID:ey93yQqE
>>69
ttp://toku.xdisc.net/cgi/up2/oiu/xs8571.zip
自分のプログラムに組み込むついでにやってみた
0073名前は開発中のものです。2009/04/05(日) 21:26:22ID:jzXObq/Y
>72
降ってる最中に移動量や方向は変わらないのか。

透明度が変わるのは面白いな。
あとたまに、真横や上方向に雪が飛んでくんだがw
0074名前は開発中のものです。2009/04/05(日) 21:49:08ID:8VF6BH4E
>>72
おおサンクス。
C#使ってるからそのまま使えないのが残念……。
つかこれ勝手に使って良い?
0075名前は開発中のものです。2009/04/05(日) 22:41:49ID:ey93yQqE
>>73
変な方向に行くのは元のアルゴリズムが花びらだった名残だったり

>>74
どうぞ
0076名前は開発中のものです。2009/04/05(日) 22:53:50ID:HuaUBP84
>>72
綺麗だなぁ。
横だが自分も使わせて貰う。
0077名前は開発中のものです。2009/04/05(日) 23:24:32ID:8VF6BH4E
>>75
thx!
0078名前は開発中のものです。2009/04/11(土) 23:15:22ID:wcB4somL
もうDXライブラリ3Dに頼る必要すらなくなった
次はシェーダーについて学ぼう
0079名前は開発中のものです。2009/04/12(日) 16:12:18ID:/tRhsb/a
ScreenFlip()の重さってどうにかならないの?
http://dixq.net/g/#s5
↑これ導入しても無理だった
0080名前は開発中のものです。2009/04/12(日) 17:11:30ID:lSUbUSsj
馬鹿は発言するな
0081名前は開発中のものです。2009/04/12(日) 17:13:14ID:mpmptjcJ
これってドレよ。

てかScreenFlipが重いなんて話あったっけ?

単に君の作ってるプログラムが遅くて、60FPSを保ててないのに
垂直同期信号待ちをさせたままって話じゃなくて?
0082名前は開発中のものです。2009/04/12(日) 17:17:52ID:XXYdX/zb
シェーダーって使えるの?
0083名前は開発中のものです。2009/04/12(日) 17:40:07ID:29TC1pPK
プログラム優先度変更オヌヌメ
0084名前は開発中のものです。2009/04/12(日) 17:49:43ID:9LgVxSaT
ノートPCでVistaだったら俺と一緒。
実行ファイルのプロパティ開いて、「互換性」→「WindowsXP SP2互換」にチェックを入れてみる。
もしかしたら幸せになれるかもしれない。
0085名前は開発中のものです。2009/04/12(日) 17:53:25ID:43thkbhn
>>79
遅くするための処理を導入して重くなったとはどういうことなんだ?
0086名前は開発中のものです。2009/04/12(日) 19:31:53ID:4cs7HNP3
>>79
たぶん初心者っぽいからこんなことをあえて言うけど
まずリフレッシュレートとプログラムのfpsを比較しないとね
0087名前は開発中のものです。2009/04/13(月) 00:15:55ID:GN8f0M0n
ここぞとばかりに食いつく初心者たちの群れ
0088名前は開発中のものです。2009/04/15(水) 15:18:06ID:I8P/Rh48
そういやDXライブラリがDirectX9ベースに移植してるって話はどうなった?
あのコード量を移植するのは並大抵じゃないとおもうが、作者ガンバレ!
0089名前は開発中のものです。2009/04/15(水) 16:13:43ID:3g1BJoyH
うーん、>>79 じゃないけどただ ScreenFlip してるだけで CPU 使用率が 60% くらいになるのはなんで?
Pen4 の 1.6GHz だけど
0090名前は開発中のものです。2009/04/15(水) 16:37:47ID:I8P/Rh48
それはScreenFlipの仕様。VSyncがくるまで待機するんだが、その待機時間もCPU使用率に含まれる。(実質アイドリングループなのだが)
CPUが100%になるのがいやならVsync待ちを切ればいい。(ティアリングが発生するし、ゲームの速度も変わってしまう)

正しい設計はVsync待ちは有効で、なおかつFPS管理をし60fpsになるようにフレーム毎に適度にsleepを入れること。
0091名前は開発中のものです。2009/04/15(水) 18:32:01ID:lTpXHjBQ
1か所sleepするだけでもだいぶ変わりそうだねぇ
0092名前は開発中のものです。2009/04/15(水) 20:06:35ID:OTuGa66k
>正しい設計はVsync待ちは有効で、なおかつFPS管理をし60fpsになるようにフレーム毎に適度にsleepを入れること。

モニタのリフレッシュレートが60でない時はどうなるのかな。
0093名前は開発中のものです。2009/04/15(水) 20:43:14ID:1cQMYjlB
公式より引用:
>前回の ScreenFlip から 10ミリ秒以下しか時間が経過していない場合のみ Sleep で処理を一時停止するようにしています

>>92
60fpsになるように管理してるんだから60fpsになるだろーがw
0094名前は開発中のものです。2009/04/15(水) 21:18:20ID:I8P/Rh48
>>93
フルスクリーンにできる or デフォルトのリフレッシュレートが50 であるのであれば、Vsync有効。
ウィンドウモードでリフレッシュレートが60以外の場合は、ティアリングを犠牲にしてVsync切る。
(ウィンドウモードで垂直同期に合わせてしまうとティアリングの線が毎フレーム同じようなところにできてしまって、逆にきたなくなってしまう)

現状、DirectX7ベースのDXライブラリではウィンドウモードでのVsync無効だから、どうしようもないぜ。
0095名前は開発中のものです。2009/04/15(水) 21:20:12ID:I8P/Rh48
すまん。誤字がすごい。レスは>>92へだ。
あと、50じゃなくて60。
0096名前は開発中のものです。2009/04/15(水) 21:20:56ID:lTpXHjBQ
ん? 50?
0097名前は開発中のものです。2009/04/15(水) 21:21:42ID:lTpXHjBQ
リロードしろ俺 orz
0098名前は開発中のものです。2009/04/15(水) 21:43:40ID:OTuGa66k
>>60fpsになるように管理してるんだから60fpsになるだろーがw

だからどう管理するのかなーと。

単純に「1/60秒 - 前回のScreenFlipから経過した時間」でSleepかけると
モニタのリフレッシュレートが70の時、いざScreenFlipしようとした時には
すでに1フレーム経過しちゃうんだから、次のVsync信号待ちまで待っちゃうよね。
そしたら1フレーム 2/70 秒になって 35FPSって事なっちゃうのでは。

いや、当然こんな事解決する方法はあるんだろうけど
俺の頭じゃ難しくて。
0099名前は開発中のものです。2009/04/16(木) 02:52:38ID:12a1chsH
>>94
>ウィンドウモードでのVsync無効だから

って言われるけどウィンドウモードで、どう見てもScreenFlipでVsync待った方が明らかにティアリングなしできれいなんだがなぜ?
リフレッシュレートを変えても同じ。
ただ、fps調整無しでリフレッシュレートのfpsになるように単純にVsyncを待った場合、
ウィンドウモードよりフルスクリーンの方が明らかに滑らか(高fps)を体感できる。もうよくわかんない。
0100名前は開発中のものです。2009/04/16(木) 02:58:08ID:uc3ezfKA
70の時は1/70だから1/60よりも速いからその分だけ待てばいいのでは
0101名前は開発中のものです。2009/04/16(木) 05:02:47ID:XS+5u9bO
>>99
OSはVistaかい?
VistaだとDesktopWindowManagerが自動でティアリング防止するように描画順を待機するようになるからティアリング無いかもね。(未検証でゴメン)
詳しくはここ。http://d.hatena.ne.jp/enra/20081014#p2
で、XPでDirectX7環境だとティアリングが発生します。でもXPでもDirectX9が検出できた場合に限ってScreenFlipで垂直同期待ちになる模様。
(もしくはティアリングが発生していても、線がウィンドウの領域と被ってないので見えてないだけかもしれない)
0102名前は開発中のものです。2009/04/16(木) 05:18:57ID:WR6HuXg0
>>90
なるほどなるほど
VSync まちでいろいろやってるループより sleep の方が軽いのは当然てことか
0103名前は開発中のものです。2009/04/16(木) 05:27:06ID:12a1chsH
>>101
2000/XPです。
下方向に高速スクロールする画面で、Vsync同期/非同期を切り替えられるようにしてます。
明らかに違いが出てきますね。
ティアリングに敏感な人なら確実に分かると思います。
同期してないとガリガリしてるような気がします。

でも、フルスクリーンの方がさら〜って感じでさらにきれいに見えるのも謎。
60Hzと70Hzじゃ描画回数が違うので当然なんだけど。(見た目にも描画回数が多いのがはっきりわかる)
でもこれはウィンドウモードとフルスクリーンじゃ絵柄自体の大きさが違うので錯覚してるだけかも。

>でもXPでもDirectX9が検出できた場合に限ってScreenFlipで垂直同期待ちになる模様。

これはかなり興味深いですね。初めて聞きました。
ウィンドウモードでも間違いなく同期してると思ってる派なので調べてみます。
0104名前は開発中のものです。2009/04/16(木) 15:55:17ID:U7PVHoMj
>>100
>70の時は1/70だから1/60よりも速いからその分だけ待てばいいのでは

そしたら70FPSになるんじゃないか。

70FPSは60FPSより1秒間に10フレーム多い事になるから、
6フレームごとに1回、空待ちさせれば60FPSを実現させる事はできるけど、
ゲームの処理時間が、「60FPSだと余裕があるが、70FPSだと足りない」
って時に処理落ちがひどくなる。
0105名前は開発中のものです。2009/04/16(木) 19:22:11ID:/YbqE5Rh
14歳からはじめるC++ わくわくゲームプログラミング教室

って本に間違いってないですか?
何度書き直しても、サンプルプログラムにエラーが発生します
(P118です)
0106名前は開発中のものです。2009/04/16(木) 19:37:00ID:D5YSrYi0
なにそれこわい

よくわからないけど、4章-01の最後、P125まで全部入れてひとつのプログラムだぞ。
・main.cpp
・gameframe.h
・gameframe.cpp
0107名前は開発中のものです。2009/04/16(木) 19:41:32ID:D5YSrYi0
なんかわかった気がする。

gameframe.h の先頭で、#include "DxLib.h" 宣言しておかないとむりぽ

これ、本文に書いてない。
P120上の画面写真のプログラムには、しれっと入ってるけど。
0108名前は開発中のものです。2009/04/16(木) 20:44:04ID:uc3ezfKA
エラーが発生したならその内容も書いておかないと
0109名前は開発中のものです。2009/04/16(木) 23:14:39ID:BmH0FmoL
その本動画あったよ
誤植多いそうです
0110名前は開発中のものです。2009/04/16(木) 23:53:51ID:LfSelEBA
確かに、誤植は多いな。まぁ、ソースも付いているんだからWinMergeを使うのも勉強だと思えばいい。
0111名前は開発中のものです。2009/04/17(金) 00:52:02ID:EZBCVXFE
>>104
int nowtime = GetNowCount();
static int oldtime = 0;
static int frametime = 1000 / 60

int diftime = nowtime - oldtime;

while(1)
{
if(diftime >= frametime)
{
oldtime = nowtime;
break;
}
else
{
Sleep(1);
nowtime = GetNowCount();
diftime = nowtime - oldtime;
}
}
こんな感じでScreenFlip()の前に書いてみて。
今ちょっと60Hz以外選べない環境なので今は確かめられないけど、
たしか以前試したときはちゃんと60Hz以外でも60fps出てたはずだよ。
0112名前は開発中のものです。2009/04/17(金) 05:23:57ID:WaZv4/Kc
たぶん>>104が言わんとしていることと、>>111が出したコードには相関性が無い
0113名前は開発中のものです。2009/04/17(金) 05:51:08ID:Zvoaz6Vb
>112
俺もそんな気がしてきた
0114名前は開発中のものです。2009/04/17(金) 09:10:19ID:Ulw/lN4/
今回の流れで試しに自作ゲームのタイトルのキー入力待ちでSleep(1)入れてみたら
CPU使用率100%から0%になった/(^o^)\ナンテコッタイ

例えばタイトル画面とか即時性のない入力待ちの時って
ちょっと長めにSleep入れたりするほうがいいのかな?
20msぐらいなら問題ないのだろうか・・・
0115名前は開発中のものです。2009/04/17(金) 09:45:55ID:0V/Re1GH
>例えばタイトル画面とか即時性のない入力待ちの時って
>ちょっと長めにSleep入れたりするほうがいいのかな?

少なくとも俺は入れてる。

>20msぐらいなら問題ないのだろうか・・・

全然問題ないと思う。
もっと入れてもいいくらいでしょ。
実際にやってみて自分でストレス感じるなら減らせばいい。
0116名前は開発中のものです。2009/04/17(金) 13:46:09ID:WaZv4/Kc
入れすぎると、キー入力が飛ばされる可能性もあるので、注意したほうがいいよ。
20msぐらいなら大丈夫だけどね。
0117名前は開発中のものです。2009/04/17(金) 16:20:15ID:Zvoaz6Vb
むしろ、何故キー入力待ちだけでループさせてることに突っ込もうぜ
0118名前は開発中のものです。2009/04/17(金) 19:34:30ID:LNYxAbHW
タイトル画面が動くゲームもあるのだよ
あと音楽のループ再生する時はScreenFlipを毎フレーム呼ぶ必要があるみたいだし
0119名前は開発中のものです。2009/04/17(金) 20:21:09ID:jcPGGnUF
>>111はオレ的には神です
マジサンクス
0120名前は開発中のものです。2009/04/17(金) 20:22:40ID:xbUmRi3d
WaitKey(笑)
0121名前は開発中のものです。2009/04/17(金) 20:22:58ID:erDEgGZV
まぁ少なくともProcessMessage()はいれておくべきだよな。
0122名前は開発中のものです。2009/04/17(金) 22:03:28ID:EZBCVXFE
>>118
音楽再生とScreenFlipは関係ないと思うよ。
CPUが100%になるのは明らかに異常だからちゃんとProcessMessage()かSleep()出来てるか確かめた方がいいよ。
たぶんウィンドウ自体をドラッグすらままならない状態だと思うから。
OSにタスクさえ返してあげられてればCPUが多少高くても気にしなくていいと思うけどなぁ。
ゲームって常駐させたり多重起動させたりするものじゃないし。
0123名前は開発中のものです。2009/04/17(金) 22:17:35ID:ZoeUfmZ7
ProcessMessageさえ入れとけば大丈夫だと思ってた
01241182009/04/18(土) 02:18:14ID:k17DhjXo
うへあーw
素で間違えてたorz
何と言う勘違い 恥ずかしい限りです しばらくROMってます
0125名前は開発中のものです。2009/04/18(土) 21:37:09ID:okbqytId
ディスプレイ2台の環境でウィンドウを左右に振ると
片側のディスプレイだけ明らかに画面がぼやけるんだけど
DirectXの設定かビデオカードの設定がおかしいんだよなこれ?
0126名前は開発中のものです。2009/04/18(土) 22:23:48ID:okbqytId
言い忘れ
SetEmurationやSetGraphModeで画面を引き延ばすと起こるっぽい
ディスプレイの設定なのかよく分からん・・・
0127名前は開発中のものです。2009/04/19(日) 00:37:44ID:BefQR+3B
ディスプレイ二台の環境使ってる人はそういないだろうから
同意求められても答えられる人ほとんどいないんじゃない?
0128名前は開発中のものです。2009/04/20(月) 22:52:47ID:eX32oi4P
保守
0129名前は開発中のものです。2009/04/21(火) 15:00:56ID:UkM4PCid
最初 ScreenFlipとScreenCopyの違いがわからんかった
ScreenFlipは裏画面と表の内容を交換するで
ScreenCopyは裏画面の内容を表に上書きコピーなんだったんだなー
0130名前は開発中のものです。2009/04/24(金) 01:45:21ID:Zjz+Ahwz
C#の練習にDXライブラリ使ってみよう
0131名前は開発中のものです。2009/04/25(土) 02:57:38ID:jgu2I7ss
>>125
シャギるな。俺もだ。
設定次第ではどうにかなるのかもしれんけど。

どっちにせよわざわざウィンドウを引っ張って画面を跨らせることもなかろう。
0132名前は開発中のものです。2009/04/27(月) 18:31:23ID:FIDn8lAk
かっこいい爆発がつくれない
0133名前は開発中のものです。2009/04/27(月) 21:58:22ID:z25pzrXj
それはスレチ
0134名前は開発中のものです。2009/04/28(火) 00:04:23ID:eksjqOvu
DXライブラリの本を読んだけど、とても14歳から始めるような話じゃねーな
大学生が入門書に読んでちょうどいいレベルだろコレ
0135名前は開発中のものです。2009/04/28(火) 00:10:39ID:HkJlrRjH
14歳から始めて30歳くらいで読み終わるっていう意味じゃないかな
0136名前は開発中のものです。2009/04/28(火) 00:34:07ID:m4cMSkq6
14歳っつーと中二くらいか。
俺はBASICがせいぜいだったが、
マシン語とかやってる友人もいたし
決して無理じゃないだろう。
0137名前は開発中のものです。2009/04/28(火) 00:45:01ID:NnZtX6wz
やっぱ0x14歳だったか
0138名前は開発中のものです。2009/04/28(火) 01:53:08ID:OFMPoMrl
むしろ厨二がガツンとやられるための本
0139名前は開発中のものです。2009/04/28(火) 08:20:28ID:6tVcbqW6
14歳の新版(VS2008対応版)は、3章までと4章以降のレベル差がひどい。
簡単に作れるように自前ライブラリ用意してるけど
そのせいでDxLib関数なのか自前関数なのかごっちゃになってるし。

間に20章ぐらい入れて10本以上ゲーム作って、本の厚さが倍になってもいいぐらい。
0140名前は開発中のものです。2009/04/28(火) 09:19:39ID:nBjz8W9W
>>139
そしたら、値段も倍になるがな
0141名前は開発中のものです。2009/04/28(火) 10:17:56ID:eksjqOvu
世間一般の流れ

小学生 ゲーム遊ぶのおもしれえwww
中学生 ツクールおもしれえwww
高校生 VisualBASICとかC言語を始めるか
大学生 C++とかJAVAで2Dゲームでも作るか
20代 3Dゲーム、オンラインゲーム作るよ!
30代 何でこんな仕事を選んだんだろう……
40代 クビになった。新しい仕事探すか……
50代 息子よ。おれは昔、ゲーム開発をやっててなあ
60代 年金安いのう……
70代 孫よ。わしは昔、ゲーム開発を(ry
80代 開発の仲間……もうみんなこの世におらん……
90代 ゲーム? 何のことかいね
100代 「おじいちゃん! それはご飯じゃないよ、ゲームだよ!」
晩年 「おじいちゃんは亡くなる前に、大好きな『ハレハレユカイ』を唄っていました」
0142名前は開発中のものです。2009/04/28(火) 10:28:58ID:FvUt88Xp
大往生だな。いい人生だった
0143名前は開発中のものです。2009/04/28(火) 16:15:43ID:6TTz0S/c
>30代 何でこんな仕事を選んだんだろう……

いまここ
0144名前は開発中のものです。2009/04/28(火) 22:07:41ID:MfOPTYG9
なんか画面のドット範囲が640×480で固定されてるんですが
これいじる方法はDXライブラリには無いんですか?
0145名前は開発中のものです。2009/04/28(火) 22:15:25ID:GpFUP3xe
公式のリファレンスくらい嫁と言いたいが
つSetGraphMode
0146名前は開発中のものです。2009/04/28(火) 22:24:39ID:MfOPTYG9
>>145
ありがとうorz
すみません。ウインドウモードの項ばかり探してました
0147名前は開発中のものです。2009/04/28(火) 23:44:24ID:AAXsWLBJ
「これいじる方法はDXライブラリには無いんですか?」って訊くくらいなら全部読めよ!
0148名前は開発中のものです。2009/04/29(水) 00:04:40ID:fznxD5WL
>>143
やあ、俺
0149名前は開発中のものです。2009/04/29(水) 00:57:49ID:8JDzhdlg
>21歳 卒業とともに小さな会社に一人だけ入社
     何でこんな仕事を選んだんだろう……相談する同僚がいない

>30歳 ←いまここ


0150名前は開発中のものです。2009/04/29(水) 12:12:40ID:0KNrHYhz
小学生 ゲーム好きだけどファミコン買ってもらえなかったから友達んちに通ってうざがられる
中学生 PC98買ってもらってtakeruとかでゲーム買ったりベーマガ買ってBASICで遊ぶ
高校生 女遊びでPCなんていじらない
大学生 にはならずにバイト生活。PCなんて無縁
20代   実家に帰るとWindows98とネットがあったので暇だったのでいじってみる。
      ここでwebの世界やプログラミング熱再発。色々物色する。
      そしてそのまま引きこもり。
30代   ←もうすぐここ
0151名前は開発中のものです。2009/04/29(水) 12:23:18ID:Id8MNKk3
それは報告しなくてもいいです
0152名前は開発中のものです。2009/04/29(水) 13:15:43ID:0KNrHYhz
してもいいです
0153名前は開発中のものです。2009/04/29(水) 14:34:34ID:DcEbzAT6
そうですか
0154名前は開発中のものです。2009/04/29(水) 14:49:56ID:eqm+L+6k
そうでづよ
0155名前は開発中のものです。2009/04/29(水) 15:17:03ID:GO8Ds4lj
そうでちゅわ
0156名前は開発中のものです。2009/04/29(水) 19:22:33ID:sy8jjFeI
プログラマーは35歳で引退だからな
プランナーや絵描きなどで生きられるだけの資産がなければ、そのままスクラップだ
ゲーム会社も高齢化が進んでて、新しい概念が作れなくなってきている
0157名前は開発中のものです。2009/04/29(水) 19:25:35ID:eqm+L+6k
なぜ35なのかというと、部下ができたりしてプログラムどころじゃなくなるから。
新しい概念が作れないのはゆとりが増えたから
0158名前は開発中のものです。2009/04/29(水) 20:32:14ID:2b50vk1R
それでも将来は……。
0159名前は開発中のものです。2009/04/29(水) 21:37:02ID:Dpfb2ylv
それはスレ違い
0160名前は開発中のものです。2009/04/30(木) 00:27:05ID:JN4PBkev
ドラッグ&ドロップで音楽を再生したいのですが
DXライブラリで実現できますでしょうか?
GetDragFilePath()の使い方がいまいちわかりません。
ご教授お願い致します_ _
0161名前は開発中のものです。2009/04/30(木) 00:58:25ID:qZvDrEy3
>>160
D&Dに関しては、GetDragFilePathでググって出てきたページの内容を見る限り、
この関数は毎フレーム呼び出し、戻り値はD&Dされていれば0、されていなければ-1となる。
D&Dされてたら、引数で渡したバッファにD&Dされたファイルのパスが入ってくる。
ちなみにD&Dされたファイルの個数はGetDragFileNum()で取得できる。
複数ある場合は、その数だけGetDragFilePathを呼べば1つずつファイルパスを取得できる。
ちなみにこれらは毎フレームに一度DragFileInfoClear()で初期化してから使うべき。

ただ情報が古い可能性もあるし、実際試したわけじゃないから、
今のDXライブラリでできるかどうかは知らない。
0162名前は開発中のものです。2009/04/30(木) 01:05:34ID:qZvDrEy3
読み返して気付いたが、ひどい日本語だ・・・まぁいいや
0163名前は開発中のものです。2009/04/30(木) 01:56:07ID:JGk3snwA
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow){
ChangeWindowMode(TRUE);
SetMainWindowText("(´・ω・`)");
if(DxLib_Init() == -1 ){return -1;}
int open,tdn,cc;char file[256];
SetDragFileValidFlag(TRUE);SetDrawScreen(DX_SCREEN_BACK);SetFontSize(32);
while(ProcessMessage()==0){
ClearDrawScreen();
open=GetDragFilePath(file);//D&Dでファイル獲得する open:ファイル獲得が成功か失敗か判定
if(open==-1&&CheckMusic()==0)DrawFormatString(0,100,-1," なんか音楽を食わせろ!ESCキーで終了");
if(CheckMusic()==0&&cc==0){SetMainWindowText("(´・ω・`)");cc=1;}
if(CheckMusic()==1)DrawFormatString(0,100,-1," 音楽を止めるのならスペースを押せ!");
if(CheckHitKey(KEY_INPUT_SPACE)==1)StopMusic(); //スペースで音楽を止める
if(CheckHitKey(KEY_INPUT_ESCAPE)==1)break; //エスケープで終了
if(open!=-1){ //ファイル獲得成功
cc=0;SetMainWindowText(file);tdn=PlayMusic(file,DX_PLAYTYPE_LOOP);}
ScreenFlip();Sleep(20);
//音楽ファイル以外を食わせた場合w
if(tdn==-1){MessageBox(NULL,"(゚Д゚)ゴルア!"," それ再生できねーし",0x0000030);StopMusic();break;}
DragFileInfoClear();
}
InitSoundMem();
DxLib_End() ;
return 0 ;
}
0164名前は開発中のものです。2009/04/30(木) 02:04:43ID:JN4PBkev
>>161-163 ありがとうございます!!
>>163さんにはサンプルまでご用意いただいて感激です!
これでBGMをプレイヤーに指定させることができます。
即レス感謝!ありがとうございました!!
0165名前は開発中のものです。2009/04/30(木) 09:08:28ID:QAaf0WGA
個人的にはAPI使って、ファイル開く形式を勧めたいが……
0166名前は開発中のものです。2009/04/30(木) 13:16:31ID:Nu0gAO10
最初からサンプル書いてくれと露骨に頼めば可愛げもあるのに。
0167名前は開発中のものです。2009/05/01(金) 08:16:49ID:OvJuayUs
暫定的にDrawStringで文字を描いていたんだけど、
見栄えや諸々の理由で画像ファイルとして文字を作ることにした。
インストールされてるフォントを使って12x16のサイズのカタカナを
ほぼそのまま描いてるんだけど、どうしてもエッジが目立っちゃう。
縁取りとか、影とか、ぼかしとか色々試したんだけど難しい。
みんなはどうやってるの?あと、デザインとか凝ったりするの?
0168名前は開発中のものです。2009/05/01(金) 09:46:27ID:g5JaOboh
>>167
その辺は、普通に。 まずは、見栄えとかよりも、完成が先だしね。
「文字 CG 講座」とか「ロゴ 制作」とかで検索すrば、やりたい事の方法が見つかると思う。
0169名前は開発中のものです。2009/05/01(金) 10:22:40ID:SX1l7Niw
なんの為の文字かってのにもよるだろうけど、
セリフとかそんなヤツなら、何も工夫せずにそのままDrawStringで表示してる。

>デザインとか凝ったりするの?

デザインが大事なのは理解してるが、センスが壊滅的なので
あきらめて最低限で済ませてる。
■ このスレッドは過去ログ倉庫に格納されています