Platform SDK: DirectX

ステップ 3 : セカンダリ サウンド バッファの作成

[Visual Basic]

ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectSound Visual Basic チュートリアル」を参照すること。

[C++]

ここでは引き続き SetupStreamBuffer 関数の内部を調べる。今度はウェーブ ファイルと同じフォーマットでセカンダリ サウンド バッファを作成する。このプロセスは、プライマリ バッファを作成したステップ 1 に似ている。最初に、グローバルな DSBUFFERDESC 構造体でこのバッファについて記述し、次にその記述を IDirectSound::CreateSoundBuffer メソッドに渡す。

    memset(&dsbdesc, 0, sizeof(DSBUFFERDESC)); 
    dsbdesc.dwSize = sizeof(DSBUFFERDESC); 
    dsbdesc.dwFlags = 
            DSBCAPS_GETCURRENTPOSITION2   // これを行うのは常に良い考えである。
            | DSBCAPS_GLOBALFOCUS         // バックグラウンド再生を可能にする。
            | DSBCAPS_CTRLPOSITIONNOTIFY; // 通知に必要である。
 
    // バッファのサイズは任意であるが、再生位置の十分
    // 先でデータを書き込めるように、少なくとも 2 秒の長さに
    // すべきである。
 
    dsbdesc.dwBufferBytes = pwfx->nAvgBytesPerSec * 2;  
    dsbdesc.lpwfxFormat = pwfx; 
 
    if FAILED(IDirectSound_CreateSoundBuffer(
            lpds, &dsbdesc, &lpdsb, NULL))
    {
        WaveCloseReadFile(&hmmio, &pwfx);
        return FALSE; 
    }

次項 : ステップ 4 : 再生の通知の設定