バッファー コントロール オプション
アプリケーションは、サウンド バッファーの作成時にそのバッファーに必要なコントロール オプションを指定する必要があります。これは、DSBUFFERDESC 構造体の dwFlags メンバーによって実行されます。このメンバーは以下の表のフラグを 1 つ以上含むことができます。
フラグ | 説明 |
---|---|
DSBCAPS_CTRL3D | サウンド ソースを 3D 空間に移動することができます。 |
DSBCAPS_CTRLFX | エフェクトをバッファーに追加できます。 |
DSBCAPS_CTRLFREQUENCY | サウンドの周波数を変更できます。 |
DSBCAPS_CTRLPAN | サウンド ソースを左から右に移動することができます。 |
DSBCAPS_CTRLPOSITIONNOTIFY | 通知位置をバッファー上に設定できます。 |
DSBCAPS_CTRLVOLUME | サウンドのボリュームを変更できます。 |
コントロールの特定の組み合わせは許可されていません。詳細については、「DSBUFFERDESC」を参照してください。
すべてのサウンド カードで最高のパフォーマンスを得るには、アプリケーションで使用するコントロール オプションのみを指定する必要があります。
DirectSound では、ハードウェア リソースをサウンド バッファーに割り当てることができるかどうかの決定においてコントロール オプションを使用します。たとえば、デバイスがハードウェア バッファーをサポートしているが、これらのバッファーにパン制御を提供しないとします。この場合、DirectSound は DSBCAPS_CTRLPAN フラグが指定されていない場合のみハードウェア アクセラレーションを使用します。
バッファーに存在しないコントロールをアプリケーションで使用しようとすると、そのメソッドは失敗します。たとえば、IDirectSoundBuffer8::SetVolume メソッドを使用してボリュームを変更しようとすると、バッファーの作成時に DSBCAPS_CTRLVOLUME フラグが指定されている場合のみメソッドは成功します。指定されていない場合、メソッドは失敗し、DSERR_CONTROLUNAVAIL エラー コードを返します。