1.
设置声音可听见的最小和最远距离。API:
Sound::set3DMinMaxDistance(float min, float max)
程序中:
sound1->set3DMinMaxDistance(2.0f * DISTANCEFACTOR, 10000.0f * DISTANCEFACTOR);
min:
最小距离
max:
最大距离
2.
开始播放音乐。API:
FMOD_RESULT System::playSound(FMOD_CHANNELINDEX
channelid
,FMOD::Sound *
sound
,
bool
paused
, FMOD::Channel **
channel
);
程序中:
result = system->playSound(FMOD_CHANNEL_FREE, sound1, true, &channel1);
FMOD_CHANNELINDEX
得到空闲的声道。
FMOD::Sound
之前定义好的声音变量
bool
paused
事后停止
FMOD::Channel
得到的声道的指针
3.
设置声道的位置以及速度。
API
:
FMOD_RESULT Channel::set3DAttributes(const FMOD_VECTOR *
pos
,
const FMOD_VECTOR *
vel
);
程序中:
result = channel1->set3DAttributes(&pos, &vel);
pos
:声道位置
vel
:声道速度
4.
得到当前可得到的2d和3d的数目。API:
FMOD_RESULT System::getHardwareChannels(int *
num2d
,int *
num3d
,int*
total
);
程序中:result = system->getHardwareChannels(&num2d, &num3d, 0);
num2d
:
可以混合3d的数目
num3d
:可以混合2d的数目
total
:
total = num3d + num2d
5.
更新3d的位置速度和方向。API:
FMOD_RESULT System::set3DListenerAttributes(int
listener
,
const FMOD_VECTOR *
pos
,
const FMOD_VECTOR *
vel
, const FMOD_VECTOR *
forward
,const FMOD_VECTOR *
up
);
程序中:
result = system->set3DListenerAttributes(0, &listenerpos, &vel, &forward, &up);
listener
:如果环境中只有一个听者,则设置为0
pos
:听者的位置
vel
:从声音的起始位置到达听者耳朵时,每一秒的位移
forward
:听者前方的方向
up
:听者上方的方向