从iOS 5开始,我们在OpenAL中支持混响效果,但是我找不到使用此功能的任何好例子。我发现只有一些指向ObjectAL源代码的链接,但它太复杂,无法理解混响效果的用法。 那么,如何使用OpenAL为iOS应用添加混响效果?
答案 0 :(得分:1)
ObjectAL代码库变得相当复杂,但在OpenAL方面,它实际上只是围绕C API的一个大包装器。混响的主要Objective-C API入口点是:
如果你想自己实现它,你首先需要像我在[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));
因此代码将始终遵循以下两条路径之一:
全局控件(通过侦听器控制)是:
本地控制(通过源控制)是:
我还在这里写了一个小演示: https://github.com/kstenerud/ObjectAL-for-iPhone/blob/master/ObjectALDemo/Demos/ReverbDemo.m
就我所知,Apple并没有提供太多文档,所以你最好的选择是克隆回购,构建演示,并使用API,直到你了解它是如何工作的一起。那么将你使用ObjectAL所做的事情转化为对alcASASetListener()和朋友的实际调用是一个问题,但这些应该是非常直接的翻译,因为它最终只是包装代码。