开放式缓冲区
OpeanAL buffers
根据我对OpenAL对象的理解,OpenAL Buffer属于设备,而不属于上下文。如果我想创建一个缓冲区,我会使用 alGenBuffers() 这样做,但我不确定这个缓冲区将在哪个设备上创建。如何选择在哪个设备上创建缓冲区?
OpenAL Buffer belongs to a device, and not a context
当您使用 alGenBuffers()
创建缓冲区时,缓冲区确实是在特定设备上创建的。简而言之,当调用 alGenBuffers()
时,它会获取活动上下文的设备。然后在该设备上创建缓冲区。
How do I choose which device to create the buffer on?
因此,您需要获取另一台设备并使用该设备创建新的上下文:
ALCdevice *device = alcOpenDevice(...);
ALCcontext *context = alcCreateContext(device, NULL);
然后使这个新上下文成为当前活动上下文:
alcMakeContextCurrent(context);
现在任何 alGenBuffers()
、alBufferData()
等都应用于该活动上下文,然后又应用于活动上下文的设备。
根据我对OpenAL对象的理解,OpenAL Buffer属于设备,而不属于上下文。如果我想创建一个缓冲区,我会使用 alGenBuffers() 这样做,但我不确定这个缓冲区将在哪个设备上创建。如何选择在哪个设备上创建缓冲区?
OpenAL Buffer belongs to a device, and not a context
当您使用 alGenBuffers()
创建缓冲区时,缓冲区确实是在特定设备上创建的。简而言之,当调用 alGenBuffers()
时,它会获取活动上下文的设备。然后在该设备上创建缓冲区。
How do I choose which device to create the buffer on?
因此,您需要获取另一台设备并使用该设备创建新的上下文:
ALCdevice *device = alcOpenDevice(...);
ALCcontext *context = alcCreateContext(device, NULL);
然后使这个新上下文成为当前活动上下文:
alcMakeContextCurrent(context);
现在任何 alGenBuffers()
、alBufferData()
等都应用于该活动上下文,然后又应用于活动上下文的设备。