4

私は OpenAL を使い始めたばかりで、これまでのところすべて問題ないようです。いくつかのチュートリアルを試し、いくつかのサウンドを読み込んで再生することができましたが、より複雑なものを実装する前に、OpenAL の仕組みを理解していることを確認したいと思います。

基本的に私の目標は、何も気にせずに「これとこれを再生、あれを停止」などのコマンドを実行できるシンプルなシステムを作成することです。プログラムが 150 のサウンドを処理する必要があり、PCM に解凍すると合計で 250 MB になり、最初はすべて利用可能であると仮定します。

OpenAL には、ソースとバッファーがあります。ソースのプールがあり、それらを再利用することになっていることを理解しています。私が理解できず、どこにも見つけることができなかったのは、バッファが実際に表しているものです。それらは限られたリソースですか、それとも単に通常のストレージであり、おそらく簡単に再生できるフォーマットに変換されていますが、通常のメモリには残っていますか?

私が説明した状況では、次のことを行う必要があります。

  • A) 最初に 150 個のバッファーを作成し、それらすべてに 250 MB のデータを入れます。そのうちのいくつかは 1 時間のサウンドになる場合があります。プログラムの全期間にわたって保持し、必要に応じて再生します。または、
  • B) 250 MB をメモリにロードし、再生の直前に各サウンドを小さなチャンクでバッファにロードし、その後すぐに解放しますか?

A の場合、データを小さなバッファーにストリーミングしてキューに入れる目的は何ですか?

B の場合、バッファの数とその中のデータの量は安全ですか? バッファープールも作成して再利用する必要がありますか?

また、バッファ キューイングについて追加の質問があります。ソースのバッファを (プロパティとして) 設定するか、それをキューに入れることができることを理解しています (両方を行うとエラーになりますよね?)。どうやら私もそれらをアンキューする必要があることに驚きました。バッファが再生されるとすぐにこれが自動的に起こらないのはなぜですか? また、キューに入れられたのと同じ順序でそれらをアンキューする必要がありますか?

これを理解するのを手伝ってくれてありがとう。

4

0 に答える 0