Microsoft DirectX 8.0 (C++)

ステップ 2 : バッファの取得

IDirectMusicAudioPath8::GetObjectInPath メソッドを使用して、パスの一部を形成するオブジェクトへのインターフェイスを取得することができる。DMUS_APATH_DYNAMIC_3D 標準オーディオパス型の場合、これらのオブジェクトには、セカンダリ バッファそのもの、プライマリ バッファ、DirectSound リスナー、またはオーディオパスの作成後にバッファ上に設定される DMO が含まれる。このチュートリアル サンプルは、バッファへの IDirectSound3DBuffer8 インターフェイスを取得する。

IDirectSound3DBuffer8* pDSB = NULL;
 
p3DAudioPath->GetObjectInPath( 
    DMUS_PCHANNEL_ALL,        // パフォーマンス チャンネル。
    DMUS_PATH_BUFFER,         // パス内の段階。
    0,                        // チェーン内のバッファのインデックス。
    GUID_NULL,                // オブジェクトのクラス。
    0,                        // バッファ内のオブジェクトのインデックス。無視。
    IID_IDirectSound3DBuffer, // 目的のインターフェイスの GUID。
    (LPVOID*) &pDSB           // インターフェイスを受け取るポインタ。
);

IDirectMusicAudioPath8::GetObjectInPath のパラメータは、設定が少し複雑になっている。パス内の各段階のオブジェクトに対応したパラメータについては、「オーディオパスからのオブジェクトの取得」を参照すること。

チュートリアル サンプルでは、このオーディオパス上のすべてのパフォーマンス チャンネルで使用されるセカンダリ バッファを取得する。dwPChannel パラメータを DMUS_PCHANNEL_ALL に設定する。

取得するのは 1 つ目のバッファで、この場合はチェーン内に 1 つのバッファしか存在しないため、dwBuffer として 0 を渡す。DMUS_PATH_BUFFER ステージはバッファ オブジェクトだけを含み、それらのバッファに付加された DMO は含まない。このため、dwIndex は無視される。

次の「ステップ 3 : バッファのパラメータの変更」に続く。