Platform SDK: DirectX

距離係数

DirectSound はデフォルトの距離測定単位としてメートルを使う。アプリケーションがメートルを使わない場合、距離係数、つまりベクトルの単位となる任意の乗数を設定できる。

[C++]

リスナーに対する距離係数を設定した後、リスナーに適用できる任意のメソッドを呼び出す際に、アプリケーション固有の距離単位を使う。たとえば、現在のアプリケーションが測定の基本単位としてフィートを使っているとする。その場合、IDirectSound3DListener::SetDistanceFactor メソッドを呼び出して、flDistanceFactor パラメータに 0.3048 (1 フィートのメートル換算値) を指定する。それ以降、メソッドを呼び出す際にパラメータをフィート単位で指定すると、それらの値はメートル単位に自動的に換算される。

IDirectSound3DListener::GetDistanceFactor メソッドを使うと、リスナーに対して設定されている現在の距離係数を取得できる。

[Visual Basic]

リスナーに対する距離係数を設定した後、リスナーに適用できる任意のメソッドを呼び出す際に、アプリケーション固有の距離単位を使う。たとえば、現在のアプリケーションが測定の基本単位としてフィートを使っているとする。その場合、DirectSound3DListener.SetDistanceFactor メソッドを呼び出して、distanceFactor パラメータに 0.3048 (1 フィートのメートル換算値) を指定する。それ以降、メソッドを呼び出す際にパラメータをフィート単位で指定すると、それらの値はメートル単位に自動的に換算される。

DirectSound3DListener.GetDistanceFactor メソッドを使うと、リスナーに対して設定されている現在の距離係数を取得できる。

距離係数は (1 秒あたり n 単位で表される実際の速度を変更することにより) 主にドップラー効果に影響を及ぼす。ロールオフに直接的な影響を及ぼすことはない。距離に応じた減衰率は、この単位を使った最小距離に基づいているからである。あるサウンドの最小距離を 2 単位に設定した場合、4 単位離れるとボリュームは半分になる。距離がフィートやメートルや他の単位であっても、これは共通である。詳細については、「最小距離と最大距離」を参照すること。