Microsoft DirectX 8.0 (Visual Basic) |
ストリーム バッファは、一度にバッファに収まらない長いサウンドを再生する。バッファが再生されるにつれ、古いデータは定期的に新しいデータに置き換わる。
ストリーム バッファを再生するには、flags パラメータに DSBPLAY_LOOPING を指定して DirectSoundSecondaryBuffer8.Play メソッドを呼び出す。
再生を停止するには、DirectSoundSecondaryBuffer8.Stop メソッドを呼び出す。このメソッドはバッファを即時に停止するので、すべてのデータが再生されたことを確認する必要がある。これを行うには、再生位置をポーリングするか、通知位置を設定する。
データをバッファにストリーミングするには、DirectSoundSecondaryBuffer8.WriteBuffer メソッドを使う。このメソッドによって、バッファの任意の部分にデータを書き込むことができる。バッファ全体に書き込むこともできるが、再生中に行うべきではない。毎回バッファの一部だけをリフレッシュすること。たとえば、再生カーソルが 2/4 に達したらすぐに、バッファの最初の 1/4 をロックして書き込むようにする。バッファの再生カーソルと書き込みカーソルの間にある部分には書き込んではならない。詳細については、「再生カーソルと書き込みカーソル」を参照すること。
次のサンプル コードは、バイト配列 myBuffer から、dsb で表されたバッファの先頭に 1,000 バイトのデータを書き込む。
dsb.WriteBuffer 0, 1000, myBuffer(0), DSBLOCK_DEFAULT
WriteBuffer は、ラップ アラウンドを透過的に処理する。たとえば、セカンダリ バッファが 10,000 バイトで作成されており、アプリケーションがバッファの中間を過ぎたオフセットに 5,000 バイト書き込む場合は、次のようになる。
dsb.WriteBuffer 8000, 5000, myBuffer(0), DSBLOCK_DEFAULT
この呼び出しは、バッファの最後に最初の 2,000 バイトを書き込み、バッファの先頭に次の 3,000 バイトを書き込む。
続くデータ記述に対するオフセットを追跡するのは、アプリケーションの責任である。この処理の最も簡単な方法は、通知位置を設定し、イベントがトリガされるたびに固定したバイト数を書き込むことである。
詳細については、次のトピックを参照すること。