Microsoft DirectX 8.0 (C++) |
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 : バッファのパラメータの変更」に続く。