强制OpenGL将内容保存在内存中?

Posted

技术标签:

【中文标题】强制OpenGL将内容保存在内存中?【英文标题】:Force OpenGL to keep contents in memory? 【发布时间】:2010-06-04 13:58:52 【问题描述】:

我正在使用 OpenGL 来渲染多边形。我注意到如果我最小化程序然后再次开始使用它,它会非常慢几​​秒钟。 (我猜它会将我的显示列表重新上传到卡上)。我该如何防止这种情况,因为它有点烦人。我希望它始终有内容。

谢谢

【问题讨论】:

这听起来像是操作系统问题。它也发生在 Windows 7 上吗? 【参考方案1】:

当你在 Windows 下最小化一个程序时,它相当于SetProcessWorkingSetSize(current_process, -1,-1);。这告诉虚拟内存管理器该程序占用的所有内存都可以被调出。我知道防止这种情况发生的唯一方法是首先阻止用户最小化程序(例如,使用DeleteMenu 从系统菜单中删除“最小化”项)。

请注意,这不是从图形卡中删除程序的绘图数据的问题——而是从内存中完全删除程序的所有数据(很可能还有代码)的问题。当然,如果你有足够的内存和一个负载足够轻的系统,它不会立即被删除——它只是被标记为可用,所以如果系统需要内存来做其他事情,它将是(一些)第一个习惯了。

【讨论】:

以上是关于强制OpenGL将内容保存在内存中?的主要内容,如果未能解决你的问题,请参考以下文章

将 Qt GUI 嵌入到现有的 OpenGL 程序中

如何在应用程序可见之前强制 OpenGL 进行绘制?

OpenGL VBO 内存泄漏

如何在 MATLAB 中将 .mat 文件内容保存在内存中?

OpenGL将图像平铺到纹理中并耗尽内存

OpenGL 纹理映射内存泄漏