ページ 11

サウンドデータロードについて

Posted: 2008年7月02日(水) 21:48
by ぴっぴ
以前、atan関数について質問させて頂いたものです。
あのときは有り難う御座いました。

そこで、現在勉強でシューティングを作成(DXライブラリとBC++)しているのですが、
LoadSoundMemでステージ音を5面分(ogg形式で約3分)起動時に読み込ませているのですが、
かなり時間が掛かってしまいます。起動から初期化なども含めて約30秒位掛かっています。
他の方々のゲームですとそんなに掛かりませんが、どのようにしたら良いのでしょうか?
ゲームの途中で読み込むと他の処理が止まってしまいテンポが悪くなってしまいます。
どなたか知恵をお貸し下さい。
宜しくお願い致します。

Re:サウンドデータロードについて

Posted: 2008年7月03日(木) 00:48
by Justy

>LoadSoundMemでステージ音を5面分(ogg形式で約3分)起動時に読み込ませているのですが、
>かなり時間が掛かってしまいます。起動から初期化なども含めて約30秒位掛かっています。
>どのようにしたら良いのでしょうか

 ゲームの起動時間はテクスチャの読み込みとか諸々の初期化もあるでしょうから、
サウンドにどれくらいの時間がかかっているのかはちゃんと調べた方がいいかと思います。

 で、本当にサウンドが原因になっているのであれば、

[color=#d0d0ff" face="sans-serif] SetCreateSoundDataType(DX_SOUNDDATATYPE_FILE);[/color]

 の1行をロード前に入れると、ストリーミング再生のフラグが立ちますので、
ひょっとしたらこれで起動が早くなるかもしれません。

Re:サウンドデータロードについて

Posted: 2008年7月04日(金) 00:09
by ぴっぴ
Justyさん
有り難う御座います。
テクスチャなどの3Dはまだ全然勉強していないので使用していません。
教えて頂いた関数で解決致しました。リファレンスも読みました。
しかしわからない点が1点あります。
ステージ音を5面分読み込んでいるのですが、関数を1回呼び出すだけで
その後全ての曲はストリーミング再生になるのでしょうか?
試したところ読み込み時間が変わらなかったので、1回呼び出せば以後
ストリーミング再生になっているようなので、関数は1度のみで良いのでしょうか?
また、途中からストリーミング再生をやめたい時の関数などはあるのでしょうか?

Re:サウンドデータロードについて

Posted: 2008年7月04日(金) 01:12
by Justy

 >ステージ音を5面分読み込んでいるのですが、関数を1回呼び出すだけで
 >その後全ての曲はストリーミング再生になるのでしょうか?

 そう思っていいと思います。
 
 この関数を呼んだ時点で、内部のサウンドフラグがファイルからの
逐次読み込みモードになります。
 このモードになった後、LoadSoundMem()で音声ファイルを読み込むと
それら全てにストリーミングフラグがつきますので、実際の再生時も
そのように動作します。



 >途中からストリーミング再生をやめたい時の関数などはあるのでしょうか?

 DxLib.h"DX_SOUNDDATATYPE_FILE"で検索すると、
 「ストリームサウンド再生データタイプのマクロ」というコメントが見つかります。

 このあたりにあるマクロを SetCreateSoundDataType()に引き渡せば
それぞれそのように動作するはずです。

Re:サウンドデータロードについて

Posted: 2008年7月08日(火) 09:39
by ぴっぴ
Justyさん
遅くなり申し訳ありません。親切丁寧なご回答ありがとう御座いました。