次の方法で共有


Play 3D Sound サンプル

説明

Play 3D Sound サンプルでは、3D サウンド バッファを作成する方法と、そのプロパティを操作する方法を示す。3D Audio サンプルに似ているが、このサンプルは DirectSound API のみを使う。

パス

ソース:(SDK ルート)\Samples\C++\DirectSound\Play3DSound

実行可能ファイル:(SDK ルート)\Samples\C++\DirectSound\Bin

ユーザーズ ガイド

[Sound File] をクリックして WAV ファイルをロードする。サウンドを再生する。音源の位置がグラフ上に赤い点で示される。このグラフでは、x 軸が左から右に向かい、z 軸が下から上に向かっている。スライダを使って、2 本の座標軸上の移動範囲を変更する。

リスナーはグラフの中央に位置し、デフォルトの向きを向いている。デフォルトの向きは、z 軸の正の方向、つまり画面の上方向である。音源はリスナーの左右前後に移動し、上下には移動しない。

ウィンドウの中央にあるスライダは、リスナーのプロパティ、つまりグローバル サウンド プロパティを制御する。[Defer Settings] をクリックすると、変更は、次に [Apply Settings] をクリックするまで適用されない。

プログラミング メモ

3D コントロールを使わずに簡単に DirectSound バッファを設定する方法の例については、Play Sound サンプルを参照すること。

このサンプルは、次の手順で IDirectSound3DListener8 インターフェイスを取得する。

  1. DSBCAPS_CTRL3D フラグおよび DSBCAPS_PRIMARYBUFFER フラグを含む DSBUFFERDESC 構造体でバッファを記述する。
  2. バッファ記述を IDirectSound8::CreateSoundBuffer に渡す。これによって、3D 機能を持つプライマリ バッファが作成される。
  3. QueryInterface を呼び出して IDirectSound3DListener8 インターフェイスを取得する。このインターフェイスはグローバル 3D プロパティを制御する。

このサンプルは、次の手順で IDirectSound3DBuffer8 インターフェイスを取得する。

  1. DSBUFFERDESC 構造体にバッファを記述する。このとき、DSBCAPS_CTRL3D 機能のフラグと 3D 仮想化アルゴリズムを設定する。
  2. バッファ記述を IDirectSound8::CreateSoundBuffer に渡して、3D 機能を持つセカンダリ バッファを作成する。
  3. QueryInterface を呼び出して IDirectSound3DBuffer8 インターフェイスを取得する。このインターフェイスは、そのバッファを使って再生されるサウンドの 3D プロパティを制御する。

アプリケーションは、IDirectSound3DListener8::SetAllParameters を呼び出してリスナーのパラメータを設定する。リスナーのプロパティは、DS3DLISTENER 構造体に記述されている。アプリケーションは、IDirectSound3DBuffer8::SetAllParameters を呼び出して DS3DBUFFER 構造体を渡し、音源の位置を設定する。

パラメータを設定すると DS3D_DEFERRED フラグが設定される。変更は、IDirectSound3DListener8::CommitDeferredSettings が呼び出されたときに反映される。このメソッドは、バッファとリスナーの設定の反映を遅らせて、DirectSound による計算が一度で済むようにしている。

参照