从iOS 5开始,我们在OpenAL中支持混响效果,但我找不到任何使用此功能的好例子。我只找到了一些ObjectAL源代码的链接,但它太复杂了,无法理解混响效果的用法。那么,如何使用OpenAL为iOS应用添加混响效果呢?
发布于 2012-10-09 05:30:17
ObjectAL代码库变得相当复杂,但在OpenAL方面,它实际上只是C应用编程接口的一个大包装器。
如果您想自己实现它,首先需要绑定扩展函数,就像我在+ALWrapper initialize:https://github.com/kstenerud/ObjectAL-for-iPhone/blob/master/ObjectAL/ObjectAL/OpenAL/ALWrapper.m#L1363中所做的那样
在核心部分,所有混响功能都是通过调用alcASASetListener()和alcASASetSource()来完成的。如果你在ALWrapper中搜索这些函数,你会发现它只是在Objective-C中包装调用(加上一些错误处理),而ALSource & ALListener正在包装它。
alcASASetSource(ALC_ASA_REVERB_SEND_LEVEL, sourceID, &value, sizeof(value));因此,代码将始终遵循以下两个路径之一:
对alcASASetSource()
的原始C调用
全局控件(通过监听程序控制)包括:
混响发送级别(混响对此混响遮挡的影响程度(模拟收听者和源之间的物理对象,声音可以部分穿过,如门或薄墙)
(模拟收听者和源之间的不传导声音的物理对象,以便只能听到周围的声音,如混凝土柱子)
我还在这里写了一个小的演示:https://github.com/kstenerud/ObjectAL-for-iPhone/blob/master/ObjectALDemo/Demos/ReverbDemo.m
据我所知,Apple还没有发布太多的文档,所以最好的办法是克隆repo,构建演示,并尝试使用API,直到您对它们如何协同工作有所了解。然后,将您使用ObjectAL做的事情转换成对alcASASetListener()和朋友的实际调用,但这些应该是非常直接的转换,因为它最终只是包装器代码。
https://stackoverflow.com/questions/12782758
复制相似问题