根据我对OpenAL对象的理解,OpenAL Buffer属于设备,而不是上下文。如果我想创建一个缓冲区,我使用alGenBuffers(),但我不确定将在哪个设备上创建此缓冲区。如何选择在哪个设备上创建缓冲区?
答案 0 :(得分:1)
OpenAL Buffer属于设备,而不属于上下文
使用alGenBuffers()
创建缓冲区时,确实在特定设备上创建了缓冲区。简而言之,当调用alGenBuffers()
时,它会获取活动上下文的设备。然后在该设备上创建缓冲区。
如何选择在哪个设备上创建缓冲区?
因此,您需要获取另一台设备并使用该设备创建新的上下文:
ALCdevice *device = alcOpenDevice(...);
ALCcontext *context = alcCreateContext(device, NULL);
然后将此新上下文设为当前活动上下文:
alcMakeContextCurrent(context);
现在,任何alGenBuffers()
,alBufferData()
等都应用于该活动上下文,然后应用于活动上下文的设备。