如果持续使用IDirectSound8::CreateSoundBuffer创建缓冲区,播放声音,但是不释放缓冲区。这样会导致所有函数都执行成功,但是某些声音播放不出来!最好的办法就是等声音播放结束立刻释放缓冲区。
像以前那样创建缓冲区播放声音后,就永远不释放内存的做法是错的。
网上同样的问题如下:http://bbs.gameres.com/showthread.asp?threadid=129171 看13楼http://www.codeguru.com/forum/showthread.php?t=251764
此外,注意下面代码将导致增加对象引用,只RELEASE一次是无法释放对象的
LPDIRECTSOUNDBUFFER8 pDSBuffer8 = NULL; //buffer
if( FAILED( hr = pDSB->QueryInterface( IID_IDirectSoundBuffer8, (LPVOID*) pDSBuffer8) ) )
return DXUT_ERR( L"BUFFER8 ERROR event", hr );