Platform SDK: DirectX |
リソースとして格納されたサウンドは短いことが多いので、スタティック バッファで再生されることが望ましい。スタティック バッファを作成し、リソースからのデータをそのバッファに書き込むには、DirectSound.CreateSoundBufferFromResource メソッドを使う。例として、「スタティック バッファの書き込みと再生」を参照すること。
さらに長いサウンドはウェーブ ファイルに格納され、ストリーム バッファから再生される。詳細については、次のトピックを参照すること。
DirectSound API は、リソースからウェーブを読み込むメソッドを備えていない。しかし、Dsutil3d.c にはいくつかのヘルパー関数があり、DirectMusic サンプル ディレクトリ にある 3DMusic サンプル用のソース コードが付属している。
実行可能ファイルか DLL にウェーブ サウンドを保存するには、ウェーブ ファイルをリソースとしてインポートし、文字列の名前を割り当てる。Dsutil3d.c がこれらのリソースを "WAV" タイプであると期待する点に注意すること。Microsoft® Visual C++® を使う場合、インポートされたウェーブ ファイルは "WAVE" タイプのリソースに変換される。リソース ファイルを編集してこの名称を "WAV" に変更するか、Dsutil3d.c 内の c_szWAV の代入を変更しなければならない。その結果、FindResource 関数は "WAVE" リソースを検索できる。
DSLoadSoundBuffer 関数が適切なコントロール フラグだけをセットするよう、Dsutil3d.c を変更することもできる。
スタティック バッファを作成して、サウンドをこのバッファにロードするには、単純に IDirectSound インターフェイス ポインタとリソースの名前を DSLoadSoundBuffer 関数に渡す。成功した場合、この関数はバッファへのポインタを返す。次はサンプルの呼び出しであり、lpds は IDirectSound インターフェイスへのポインタである。
#include "dsutil.h" LPDIRECTSOUNDBUFFER lpdsbFootstep; lpdsbFootstep = DSLoadSoundBuffer(lpds, "FOOTSTEP"); if (lpdsbFootstep == NULL) { // 失敗。 }