Platform SDK: DirectX

リソースからのウェーブ データの読み込み

[Visual Basic]

リソースとして格納されたサウンドは短いことが多いので、スタティック バッファで再生されることが望ましい。スタティック バッファを作成し、リソースからのデータをそのバッファに書き込むには、DirectSound.CreateSoundBufferFromResource メソッドを使う。例として、「スタティック バッファの書き込みと再生」を参照すること。

さらに長いサウンドはウェーブ ファイルに格納され、ストリーム バッファから再生される。詳細については、次のトピックを参照すること。

[C++]

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)
{
    // 失敗。
}