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