バッファ コントロール オプション
サウンド バッファを作成するときは、バッファが必要とするコントロール オプションを指定しなければならない。これには、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 エラーコードを返す。
参照