0
我目前在OpenAL中遇到了一些問題。我開始流式傳輸一個聲音,然後調用一個函數,該函數將嘗試排列剩餘的聲音,如果它沒有加載到初始播放調用中。在最初播放大聲音時,它不會更新信號源上的數據。OpenAL Stream未更新
這裏是用來嘗試和填充通道緩衝器中的源:
private void EnsureBufferFilled(Int32 sourceId, List<Int32> bufferIds)
{
if(!_Registered || bufferIds.Count == 0) return;
Task t = new Task(() =>
{
List<Int32> loadedIds = new List<Int32>();
foreach (Int32 bufferId in bufferIds)
{
if (AL.IsBuffer(bufferId))
{
AL.SourceQueueBuffer(sourceId, bufferId);
loadedIds.Add(bufferId);
}
else break;
}
bufferIds.RemoveRange(0, loadedIds.Count);
if (bufferIds.Count != 0)
{
EnsureBufferFilled(sourceId, bufferIds);
}
});
t.Start();
}
任何幫助,將不勝感激。
感謝
加載並排隊緩衝區後,您不必調用AL.SourcePlay? –
對AL.SourcePlay的調用不在此函數之內,此函數試圖將數據排隊到播放頻道 – Elliott