Microsoft DirectX 8.0 (C++) |
IDirectSound3DBuffer8 インターフェイスは、DSBUFFERDESC 構造体の dwFlags メンバで DSBCAPS_CTRL3D フラグを指定して作成されたDirectSound セカンダリ バッファから取得される。
アプリケーションが DirectMusic のパフォーマンスおよびオーディオパスを使用している場合、DMUS_APATH_DYNAMIC_3D を dwType パラメータとして IDirectMusicPerformance8::CreateStandardAudioPath に渡すことによって、3D バッファを含むオーディオパスを作成できる。
構成オブジェクトから適切なオーディオパスを作成することもできる。オーディオパス構成によって、バッファの 3D パラメータを指定できる。オーディオパスを作成するときに、バッファの 3D プロパティはこれらのパラメータを使って初期化される。
オーディオパス内の 3D バッファへのインターフェイスを取得するには、dwStage を DMUS_PATH_BUFFER に設定して、IDirectMusicAudioPath8::GetObjectInPath または IDirectMusicSegmentState8::GetObjectInPath を呼び出す。
次のサンプル コードでは、標準オーディオパスを作成し、IDirectSound3DBuffer8 インターフェイスを取得している。
HRESULT hr; IDirectMusicAudioPath8* g_p3DAudioPath; IDirectSound3DBuffer8* g_pDS3DBuffer; if (FAILED(hr = pPerformance->CreateStandardAudioPath( DMUS_APATH_DYNAMIC_3D, 64, TRUE, &g_p3DAudioPath))) return hr; if (FAILED(hr = g_p3DAudioPath->GetObjectInPath( DMUS_PCHANNEL_ALL, DMUS_PATH_BUFFER, 0, GUID_NULL, 0, IID_IDirectSound3DBuffer8, (LPVOID*) &g_pDS3DBuffer))) return hr;
アプリケーションが独自の DirectSound セカンダリ バッファを作成および管理し、DirectMusic パフォーマンスを使用しない場合、次のサンプル コードのように、バッファについて IDirectSoundBuffer8::QueryInterface メソッドを呼び出すことによって、IDirectSound3DBuffer8 インターフェイスを取得できる。
// lpDsbSecondary は、DSBCAPS_CTRL3D を指定して作成された // 有効な IDirectSoundBuffer8 であると仮定する。 LPDIRECTSOUND3DBUFFER8 lpDs3dBuffer; HRESULT hr = lpDsbSecondary->QueryInterface(IID_IDirectSound3DBuffer8, (LPVOID *)&lpDs3dBuffer);