0
我越來越瘋狂試圖解決這個奇怪的行爲。 我成功的創建了一個緩衝的OpenAL排隊波等播放:Openal緩衝區播放只有充滿了週期
static ALuint snd_buffer =0;
#define NUM_BUFFERS 10
static ALuint source, buffers[NUM_BUFFERS];
static float pitch = 1.0f;
static ALCdevice * my_dev = NULL;
static ALCcontext * my_ctx = NULL;
...
alGenBuffers(NUM_BUFFERS,buffers);
for (i = 0; i < NUM_BUFFERS; i++) {//EXPERIMENTAL (chaned i=0 to i=1)
buffers[i]=load_wave(wavFile);
}
一旦被填充的緩衝器,我可以成功的演出,一切正常,我可以聽到隊列循環波10倍:
alSourcePlay(source);
到目前爲止,所有工作正常,這顯然只是一個測試功能,所以我想,以取代週期緩衝「手動」填寫:
buffers[0]=load_wave(wavFile);
或
buffers[1]=load_wave(wavFile);
buffers[2]=load_wave(wavFile);
buffers[3]=load_wave(wavFile);
buffers[4]=load_wave(wavFile);
...
如果我填與週期都運作良好的緩衝,但如果我嘗試去感受與緩衝區[任何] = load_wave(緩衝wavFile)symply不起作用,我什麼也聽不到。
但有'0之間的差異10'和'0 4'的實際數據得到5裝?我們沒有看到緩衝區從緩衝區被填充[5]' – Gopi 2015-02-10 10:28:44
只是一個測試,我試圖填充0到10,只有0,0到5,但不起作用。我明白,不必強迫所有的緩衝區隊列,對吧?我應該能夠填充緩衝區的一部分,以便播放它,對吧?即使如此,從0到10填充緩衝區也不起作用 – ntnll 2015-02-10 10:45:23