Buffer m_soundBuffer;
Buffer3D m_3dSoundBuffer;
..
..
BufferDescription desc = new BufferDescription();
desc.Control3D = true;
desc.GlobalFocus = true;
// Below line is the cause of exception which says "Value does not fall within the expected range"
m_soundBuffer = new Buffer(i_name, desc, i_sound.Device);
m_3dSoundBuffer = new Buffer3D(m_soundBuffer);
m_3dSoundBuffer.Mode = Mode3D.Normal;
DirectSound (Buffer3d)
Hi,
I have some problems with Buffer3D. A time ago I have used directsound with no problem then I become cruious about 3d support(and where the problems begin). But then I encounter with an exception, I look around but can t see the problem. here is the portion code portion responsible from this problem :)
I am using vs.net2003, dx9c and my sound card is SBLive 5.1.
Thanks in advance...
ive wrapped up the creation code so all you haev to do is call the interface.
h
cpp
h
class ADX_API Sound3D {private: LPDIRECTSOUND3DBUFFER g_pDS3DBuffer; DS3DBUFFER g_dsBufferParams;public: Sound3D(); ~Sound3D(); bool create(LPDIRECTSOUNDBUFFER sb); LPDIRECTSOUND3DBUFFER getSound3DBuffer(){return g_pDS3DBuffer;}};class ADX_API Sound3DListener {private: LPDIRECTSOUND3DLISTENER g_pDSListener; DS3DLISTENER g_dsListenerParams; public: Sound3DListener(); ~Sound3DListener(); bool create(LPDIRECTSOUND8 ds); LPDIRECTSOUND3DLISTENER getSound3DListener(){return g_pDSListener;}};
cpp
bool Sound3DListener::create(LPDIRECTSOUND8 ds){ LPDIRECTSOUNDBUFFER pDSBPrimary = NULL; DSBUFFERDESC dsbdesc; ZeroMemory( &dsbdesc, sizeof(DSBUFFERDESC) ); dsbdesc.dwSize = sizeof(DSBUFFERDESC); dsbdesc.dwFlags = DSBCAPS_CTRL3D | DSBCAPS_PRIMARYBUFFER; if( FAILED( ds ->CreateSoundBuffer( &dsbdesc, &pDSBPrimary, NULL ) ) ) { return false; } if( FAILED( pDSBPrimary->QueryInterface( IID_IDirectSound3DListener, (VOID**)&g_pDSListener ) ) ) { SAFE_RELEASE( pDSBPrimary ); return false; } SAFE_RELEASE( pDSBPrimary ); if(FAILED(g_dsListenerParams.dwSize = sizeof(DS3DLISTENER))) return false; if(FAILED(g_pDSListener->GetAllParameters( &g_dsListenerParams ))) return false; return true;}Sound3DListener::Sound3DListener(){ g_pDSListener = NULL;}Sound3DListener::~Sound3DListener(){ if(g_pDSListener) { g_pDSListener->Release(); g_pDSListener = NULL; }}Sound3D::Sound3D(){ g_pDS3DBuffer=NULL; }Sound3D::~Sound3D(){ if(g_pDS3DBuffer) { g_pDS3DBuffer->Release(); g_pDS3DBuffer=NULL; }}bool Sound3D::create(LPDIRECTSOUNDBUFFER sb){ if(FAILED(sb->QueryInterface(IID_IDirectSound3DBuffer, (VOID**)&g_pDS3DBuffer ))) return false; g_dsBufferParams.dwSize = sizeof(DS3DBUFFER); if(FAILED(g_pDS3DBuffer->GetAllParameters( &g_dsBufferParams ))) return false; g_dsBufferParams.dwMode = DS3DMODE_HEADRELATIVE; if(FAILED(g_pDS3DBuffer->SetAllParameters( &g_dsBufferParams, DS3D_IMMEDIATE ))) return false; DSBCAPS dsbcaps; ZeroMemory( &dsbcaps, sizeof(DSBCAPS) ); dsbcaps.dwSize = sizeof(DSBCAPS); if(FAILED(sb->GetCaps( &dsbcaps ))) return false; return true;}
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement