3

OpenALのドキュメントから:

基本的な OpenAL オブジェクトは、Listener、Source、および Buffer です。オーディオデータを含む多数のバッファが存在する可能性があります。各バッファは 1 つ以上のソースにアタッチできます

私の問題は、1 秒間に複数回同時に再生する必要がある 1 つのサウンド ファイルがあることです。音の長さは 2 秒です。それで重なります。

これには複数の満たされたバッファが必要ですか (= メモリ内で複数回聞こえる)?

1 つの Buffer を複数の Source に接続した場合、メモリ内の 1 つのコピーだけで、サウンドを 10 回再生し、それ自体をオーバーラップさせることができますか? それとも、メモリ内のそのサウンドの 10 個のコピーを処理する必要がありますか?

4

1 に答える 1

4

バッファはソースから独立しています。バッファではなくソースを再生するように呼び出すことで、同じバッファを指す複数のソースを持つことができます。alSourcePlay()

同じバッファーを指す複数のソースを同時に再生しながらバッファーを管理する方法は、プログラマーにとってブラックボックスであり、openALドライバーによって管理されます。

openALバッファは(常に)メモリ内のオーディオデータと同じではないことに注意してください。openALバッファはopenALドライバによって実装に依存し、バッファのデータはシステムメモリまたはサウンドカードメモリに配置される可能性があります。したがってalBuferData、メモリからopenAL管理対象メモリにオーディオデータをコピーしているときに、openALバッファからオーディオデータへの参照またはポインタがない場合は、openALバッファに影響を与えることなくオーディオデータを操作できます。

于 2010-07-29T00:08:12.810 に答える