OpeanAL缓冲区

时间:2017-03-01 01:04:12

标签: java lwjgl openal

根据我对OpenAL对象的理解,OpenAL Buffer属于设备,而不是上下文。如果我想创建一个缓冲区,我使用alGenBuffers(),但我不确定将在哪个设备上创建此缓冲区。如何选择在哪个设备上创建缓冲区?

1 个答案:

答案 0 :(得分:1)

  

OpenAL Buffer属于设备,而不属于上下文

使用alGenBuffers()创建缓冲区时,确实在特定设备上创建了缓冲区。简而言之,当调用alGenBuffers()时,它会获取活动上下文的设备。然后在该设备上创建缓冲区。

  

如何选择在哪个设备上创建缓冲区?

因此,您需要获取另一台设备并使用该设备创建新的上下文:

ALCdevice *device = alcOpenDevice(...);
ALCcontext *context = alcCreateContext(device, NULL);

然后将此新上下文设为当前活动上下文:

alcMakeContextCurrent(context);

现在,任何alGenBuffers()alBufferData()等都应用于该活动上下文,然后应用于活动上下文的设备。