Platform SDK: DirectX |
ステップ 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 バッファの遅延設定のコミットに使われる。