トップページ > 記事閲覧
LoadBGMについて
名前:P 日時: 2018/04/09 23:01

DXライブラリのヘッダーファイルを見ると extern int LoadBGM(const TCHAR *FileName); // 主にBGMを読み込みサウンドハンドルを作成するのに適した関数 というのがありました。 この関数はLoadSoundmMem関数などで内部処理の違いというのはあるのでしょうか? またサンプルや他の文献ではLoadBGM関数の名前がほとんど挙がらないので、読み込む際はLoadSoundMem関数でもあまり変わらないのですか?
メンテ

Page: 1 |

Re: LoadBGMについて ( No.1 )
名前:管理人 日時:2018/04/11 01:46

LoadBGM は LoadSoundMem の補助関数です LoadBGM の内部は以下のようになっています // 主にBGMを読み込むのに適した関数 extern int LoadBGM_WCHAR_T( const wchar_t *WaveName ) { int Type = SoundSysData.CreateSoundDataType, SoundHandle ; if( _WCSICMP( WaveName + _WCSLEN( WaveName ) - 3, L"wav" ) == 0 ) { NS_SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ) ; } else { NS_SetCreateSoundDataType( DX_SOUNDDATATYPE_MEMPRESS ) ; } SoundHandle = LoadSoundMem_WCHAR_T( WaveName, 1 ) ; NS_SetCreateSoundDataType( Type ) ; return SoundHandle ; } LoadSoundMem でサウンドファイルを読み込む場合も、読み込み時間を短縮するために LoadSoundMem を実行する前に SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ) ; を実行してファイルストリーム方式で読み込むように設定を変更したり SetCreateSoundDataType( DX_SOUNDDATATYPE_MEMPRESS ) ; を実行して圧縮形式のサウンドファイルを圧縮形式のまま再生する方式で 読み込むように設定を変更したりしますが、それを LoadBGM では内部で自動的に行ってくれる、というだけの関数です > この関数はLoadSoundmMem関数などで内部処理の違いというのはあるのでしょうか? > > またサンプルや他の文献ではLoadBGM関数の名前がほとんど挙がらないので、読み込む際はLoadSoundMem関数でもあまり変わらないのですか? 内部で LoadSoundMem を使用しているので、SetCreateSoundDataType を使用している点を除けば LoadSoundMem と同じ処理をしています 自前で SetCreateSoundDataType を呼ぶ手間が省けるので便利だと思いますが、便利なだけの関数で、なぜ便利なのかを説明するには 結局 SetCreateSoundDataType の機能について知らなければならないので、『微妙な関数かも・・・』と思ってしまい、なんとなくリファレンスに載せていません・・・
メンテ
Re: LoadBGMについて ( No.2 )
名前:yumetodo 日時:2018/04/13 18:25

管理人さんの説明で十分すぎるんですが、その昔内部実装を詳しく追っていったときの資料をせっかくなので貼っておきますね DxLib解剖学LoadSoundMemとLoadBGM - DxLibEx Research Notes nagarei.github.io/DxLibEx/research_note/DxLib%E8%A7%A3%E5%89%96%E5%AD%A6LoadSoundMem%E3%81%A8LoadBGM.html
メンテ
Re: LoadBGMについて ( No.3 )
名前:P(解決) 日時:2018/04/13 22:34

ご返信が遅れました 管理人さん、yumetodoさんありがとうございました
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存