Ogre blitFromMemory内存泄漏

时间:2015-03-03 15:29:51

标签: c++ opencv ogre

我使用BlitFromMemory()将相机流渲染到我的Ogre场景中的纹理。但是,当我调用此函数时,它会以某种方式在内部保存图像,并且不会在下一帧自动释放它,因为我的程序突然开始使用大量内存。当我将这一行注释掉(并且不会每帧更新纹理)时,内存泄漏就消失了......

我不知道这是否是食人魔中的错误,或者我是否应该使用此功能手动释放一些内存......

以下是我的工作:

m_PixelBox = Ogre::PixelBox(width, height, 1, Ogre::PF_R8G8B8, m_currentFrame.ptr<uchar>(0));
m_Texture = Ogre::TextureManager::getSingleton().createManual("CameraTexture",Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, Ogre::TEX_TYPE_2D,width,height,0,Ogre::PF_R8G8B8,Ogre::TU_DYNAMIC_WRITE_ONLY_DISCARDABLE);   

我执行此操作的每一帧:( newFrame和m_currentFrame都是opencv Mat类型)

newFrame.copyTo(m_currentFrame);
m_Texture->getBuffer()->blitFromMemory(m_PixelBox);

这一切都有效,但它会导致大量的内存泄漏,我只能在短时间内运行我的程序,因为帧很大。

0 个答案:

没有答案