如何使用fmod_event获得更小的内存使用量
How can i get smaller memory usage with fmod_event
FMOD::EventSystem *EventSystem = 0;
FMOD::System *System;
FMOD::EventProject *Project;
FMOD::Event *pEvent;
FMOD::Sound *Sound;
FMOD_RESULT result = FMOD_OK;
if(!FEV || !FSB)
return 0;
result = FMOD::EventSystem_Create(&EventSystem);
if(result != FMOD_OK)
return 1;
EventSystem->getSystemObject(&System);
result = EventSystem->init(maxChannels, FMOD_INIT_NORMAL, 0, FMOD_EVENT_INIT_NORMAL);
if(result != FMOD_OK)
return 2;
FMOD_EVENT_LOADINFO loadinfo;
memset(&loadinfo, 0, sizeof(FMOD_EVENT_LOADINFO));
loadinfo.size = sizeof(FMOD_EVENT_LOADINFO);
loadinfo.loadfrommemory_length = FEV_len;
result = EventSystem->load((char*)FEV, &loadinfo, NULL);
if(result != FMOD_OK)
return 3;
result = EventSystem->getEvent(Event, FMOD_EVENT_ERROR_ON_DISKACCESS, &pEvent);
if(result == FMOD_ERR_FILE_UNWANTED)
{
FMOD_CREATESOUNDEXINFO exinfo = {0};
exinfo.cbsize = sizeof(FMOD_CREATESOUNDEXINFO);
exinfo.length = FSB_len;
result = System->createSound((const char*)FSB, FMOD_OPENMEMORY, &exinfo, &Sound);
if(result != FMOD_OK)
return 4;
result = EventSystem->preloadFSB(FSB_name, 0, Sound);
result = EventSystem->getEvent(Event, FMOD_EVENT_ERROR_ON_DISKACCESS, &pEvent);
if(result != FMOD_OK)
return 5;
}
else if(result != FMOD_OK)
return 6;
for(int a=0; a<LoopsCount; a++)
{
pEvent->start();
FMOD_EVENT_STATE State = FMOD_EVENT_STATE_PLAYING;
while(State == FMOD_EVENT_STATE_PLAYING)
{
pEvent->getState(&State);
result = EventSystem->update();
Sleep(300);
}
}
EventSystem->unloadFSB(FSB_name, 0);
Sound->release();
EventSystem->release();
return 10;
如何获得更小的内存使用量? 如果我运行此代码,它将占用 166MB 的 RAM。播放声音后,所有这些内存都会被释放,内存使用量将减少到 9Mb 的 RAM。前端总线有40MB。感谢您的回答。
我正在查看它,发现了错误。Fmod 创建它自己的副本,因此每次播放声音时它都会复制内存。使用这个:
System->createSound((const char*)FSB,
FMOD_SOFTWARE | FMOD_CREATECOMPRESSEDSAMPLE | FMOD_OPENMEMORY_POINT,
&exinfo, &Sound);
取而代之的是:
System->createSound((const char*)FSB, FMOD_OPENMEMORY, &exinfo, &Sound);
相关文章:
- 应用程序内存使用量减少
- 减少 g++ 内存使用量
- 如何使用 gcc 通过命令行限制C++代码的内存使用量?
- 如何在 ubuntu 上的 php 脚本中获取程序(c,c++,java,python,php)的执行时间和内存使用量?
- ActiveMQ使用者的内存使用量在onMessage调用后不断增加
- 使用 valgrind 的地块测量 c++ 应用程序的最大内存使用量(堆栈和堆)
- C 获得运行时间和内存使用量
- 使用大长度缓冲区初始化字符串流是否会使内存使用量加倍
- 使用OpenCL,如何获取GPU内存使用量
- 测量函数调用期间的最大内存使用量
- 内存使用量与数据大小相同
- 如何减少此代码中的内存使用量
- 对象大型数组的内存使用量极大
- 我应该使用哪种 c++11 范例来最小化内存使用量并最小化复制?
- 最大化内存使用量
- 使用 boost::asio SSL 服务器减少每个连接的内存使用量
- 当使用动态数组时,循环中的内存使用量不断增加.(C++)
- 随着C++程序的运行,内存使用量不断增加
- 直接索引访问与"high"内存使用量相比的理论影响是什么? "shifted"使用"low"内存使用情况的索引访问?
- Solaris 进程内存使用量会增加,但不会永远增加