前段时间,参考86VR和中国虚拟现实社区上的播放avi的程序,作了个摄像头实时播放的程序,但是播放不到一分钟就停住了,检查了好久,也不知道原因。
然后就接着做一个关于视频融合的项目,需要在vega中播放很大的avi文件,发现也是播放了几分钟就停止了,检查出来是那个内存泄漏的原因:
其一,hdd = DrawDibOpen();语句在每次调用GrabAVIFrame函数中都调用了,之后不能等到程序全部结束才释放,否则由内存泄漏,应该在GrabAVIFrame函数末尾处调用DrawDibClose(hdd)释放资源;
其二,glGenTextures(1, &texture[0]); 创建了纹理,在用完这一帧的这个纹理之后,需要马上调用glDeleteTextures(1,&texture[0]);来释放资源。