Platform SDK: DirectX

ステップ 2 : リスナーの取得

ステップ 1 で採用したグローバル変数に加え、チュートリアル 2 では次のグローバル変数を使う。

Dim m_ds3dBuffer(2) As DirectSound3DBuffer
Dim m_dsPrimaryBuffer As DirectSoundBuffer
Dim m_dsListener As DirectSound3DListener

DirectSound オブジェクトを作成した後、3D サウンド環境を設定する次のステップでは DirectSound3DListener オブジェクトを取得する。このオブジェクトは、この環境の仮想リスナーの位置と方向を含むグローバル サウンド パラメータの制御に使われる。

リスナーはプライマリ バッファから取得されるので、適切な DirectSoundBuffer オブジェクトを作成しなければならない。このバッファには 2 つのフラグを設定して、バッファが 3D 能力のあるプライマリ バッファとして作成されるようにする。WAVEFORMATEX 型は、プライマリ バッファのデフォルトのウェーブ フォーマットを取得する。この型の初期化は必要ない。

Dim primDesc As DSBUFFERDESC 
Dim format As WAVEFORMATEX
 
primDesc.lFlags = DSBCAPS_CTRL3D Or DSBCAPS_PRIMARYBUFFER
Set m_dsPrimaryBuffer = m_ds.CreateSoundBuffer(primDesc, format)

次に DirectSoundBuffer.GetDirectSound3DListener を呼び出し、プライマリ バッファからリスナーを取得する。

Set m_dsListener = m_dsPrimaryBuffer.GetDirectSound3DListener()

チュートリアル 2 のサンプルでは DirectSound3DListener を使わない。ただしこのオブジェクトは、サウンド バッファに対する相対的なリスナーの位置と方向の変更、ロールオフ係数のようなグローバル サウンド パラメータの変更、およびすべての 3D バッファの遅延設定のコミットに使われる。

次項 : ステップ 3 : ウェーブ ファイルの 3D バッファへのロード