程序意外退出时VRAM会发生什么

时间:2013-01-26 21:13:36

标签: java opengl lwjgl

假设我已经加载了一两个纹理,可能还有一些着色器,一个VAO,一个VBO,然后我运行该程序。

假设程序遇到某种运行时错误并在所有缓冲区对象和纹理都被删除之前终止。

在重新启动计算机之前,它们是否卡在视频内存中?

我知道java会自行清理,但我不认为opengl会这样做,所以我很好奇会发生什么。

1 个答案:

答案 0 :(得分:2)

  

在重新启动计算机之前,它们是否卡在视频内存中?

没有。图形卡由图形驱动程序管理,图形驱动程序通知或获知处理的进程已终止。与进程关联但未被其他进程使用的所有资源都将被释放。

在某些操作系统上,可以在进程之间共享OpenGL上下文。如果其中一个进程终止,那些当然会保持不变。


BTW:OpenGL不使用术语“视频内存”。有快速内存,但根据实现情况,它们可能是相同的。此外,当您上传纹理时,它的副本也将保存在系统内存中,因为OpenGL不对纹理和缓冲对象施加内存约束。如果需要,它将交换数据以腾出所需资源。

相关问题