Platform SDK: DirectX

バッファ コントロール オプション

[C++]

サウンド バッファを作成するときに、バッファが必要とするコントロール オプションを指定しなければならない。これには DSBUFFERDESC 構造体の dwFlags メンバを使用する。この構造体は、1 つまたは複数の DSBCAPS_CTRL* フラグを保持できる。次のコントロールが利用できる。

あらゆるサウンド カードから最高の性能を得るには、アプリケーションが使うオプションだけを指定すべきである。

DirectSound はコントロール オプションを使って、サウンド バッファにハードウェア リソースを割り当てられるかどうかを決定する。たとえば、あるデバイスがハードウェア バッファをサポートしていて、それらのバッファにパン コントロールを提供していないとする。この場合、DirectSound は DSBCAPS_CTRLPAN フラグが指定されていない場合に限って、ハードウェア アクセラレーションを使う。

バッファが備えていないコントロールを使おうとすると、メソッドは失敗する。たとえば、IDirectSoundBuffer::SetVolume メソッドを使ってボリュームを変更しようとするとき、そのバッファの作成時に DSBCAPS_CTRLVOLUME フラグが指定されていた場合に限ってメソッドは成功する。このフラグが指定されていなかった場合はメソッドは失敗に終わり、DSERR_CONTROLUNAVAIL エラーコードが返される。

[Visual Basic]

サウンド バッファを作成するときに、バッファが必要とするコントロール オプションを指定しなければならない。これには DSBUFFERDESC 型の lFlags メンバを使用する。この構造体は、1 つまたは複数の DSBCAPS_CTRL* フラグを保持できる。次のコントロールが利用できる。

あらゆるサウンド カードから最高の性能を得るには、アプリケーションが使うオプションだけを指定すべきである。

DirectSound はコントロール オプションを使って、サウンド バッファにハードウェア リソースを割り当てられるかどうかを決定する。たとえば、あるデバイスがハードウェア バッファをサポートしていて、それらのバッファにパン コントロールを提供していないとする。この場合、DirectSound は DSBCAPS_CTRLPAN フラグが指定されていない場合に限って、ハードウェア アクセラレーションを使う。

バッファが備えていないコントロールを使おうとすると、メソッドは失敗する。たとえば、DirectSoundBuffer.SetVolume メソッドを使ってボリュームを変更しようとするとき、そのバッファの作成時に DSBCAPS_CTRLVOLUME フラグが指定されていた場合に限ってメソッドは成功する。このフラグが指定されていなかった場合はメソッドは失敗に終わり、DSERR_CONTROLUNAVAIL エラー値が返される。

パン コントロールと 3D 処理は、互いに排他的である。バッファの作成時に DSBCAPS_CTRL3D と DSBCAPS_CTRLPAN をともに指定すると、エラーになる。