X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fsound%2Fsoundmgr_openal.cxx;h=450b5714d0cc98811747c9b72241c0807663ac5b;hb=6fe057e27795a7ca9624dc126a1549b8d06500b3;hp=11a10fde1c5ebecdc17680762299c7a5ac1aacac;hpb=f16199283644236bd33eed77dc622a3ce70a995f;p=simgear.git diff --git a/simgear/sound/soundmgr_openal.cxx b/simgear/sound/soundmgr_openal.cxx index 11a10fde..450b5714 100644 --- a/simgear/sound/soundmgr_openal.cxx +++ b/simgear/sound/soundmgr_openal.cxx @@ -59,8 +59,9 @@ SGSoundMgr::SGSoundMgr() : _volume(0.0), _device(NULL), _context(NULL), - _position(SGVec3d::zeros().data()), - _velocity(SGVec3f::zeros().data()), + _position(SGVec3d::zeros()), + _velocity(SGVec3d::zeros()), + _orientation(SGQuatd::zeros()), _devname(NULL) { #if defined(ALUT_API_MAJOR_VERSION) && ALUT_API_MAJOR_VERSION >= 1 @@ -100,26 +101,29 @@ void SGSoundMgr::init() { ALCcontext *context = alcCreateContext(device, NULL); if ( testForError(context, "Unable to create a valid context.") ) { + alcCloseDevice (device); return; } if ( !alcMakeContextCurrent(context) ) { testForALCError("context initialization"); + alcDestroyContext (context); + alcCloseDevice (device); return; } _context = context; _working = true; - _orientation[0] = 0.0; _orientation[1] = 0.0; _orientation[2] = -1.0; - _orientation[3] = 0.0; _orientation[4] = 1.0; _orientation[5] = 0.0; + _at_up_vec[0] = 0.0; _at_up_vec[1] = 0.0; _at_up_vec[2] = -1.0; + _at_up_vec[3] = 0.0; _at_up_vec[4] = 1.0; _at_up_vec[5] = 0.0; alListenerf( AL_GAIN, 0.2f ); - alListenerfv( AL_POSITION, toVec3f(_position).data() ); - alListenerfv( AL_ORIENTATION, _orientation ); - alListenerfv( AL_VELOCITY, _velocity.data() ); + alListenerfv( AL_ORIENTATION, _at_up_vec ); + alListenerfv( AL_POSITION, SGVec3f::zeros().data() ); + alListenerfv( AL_VELOCITY, SGVec3f::zeros().data() ); - alDopplerFactor(0.5); + alDopplerFactor(1.0); alDopplerVelocity(340.3); // speed of sound in meters per second. if ( alIsExtensionPresent((const ALchar*)"EXT_exponent_distance") ) { @@ -130,8 +134,6 @@ void SGSoundMgr::init() { testForALError("listener initialization"); - alGetError(); // clear any undetetced error, just to be sure - // get a free source one at a time // if an error is returned no more (hardware) sources are available for (unsigned int i=0; i