所以有趣的是我从未有过的OpenGL上下文丢失(其中所有的缓冲资源被全歼)直到现在。我目前正在使用OpenGL 4.2,通过SDL 1.2和Win7 64上的GLEW,同时我的应用程序也被打开,无法在运行时切换到全屏(仅在启动时允许)。OpenGL上下文损失
在我的开发机器上下文似乎永远不会丢失重新调整大小,但在其他机器上,我的应用程序可能会丢失OpenGL上下文(这似乎很少见)。由于内存限制(我有很多内存被应用程序的其他部分使用),我没有在系统内存中备份我的gl缓冲区内容(VBOs,FBOs,纹理等),奇怪的是,这不是一个问题我过去是因为背景永远不会被抹去。
在什么情况下OpenGL上下文将会丢失(其中所有GPU内存缓冲区都被擦除),而不是在全屏和窗口之间进行切换,很难从谷歌搜索中辨别出来。
回到我的DX时代,上下文丢失可能会发生,原因很多,我会在它发生时收到通知,并从系统内存备份中重新加载缓冲区。我是在这个假设之下(而且我可能在这个假设上是错误的)OpenGL(或像SDL这样的管理库)会为我处理这个缓冲区重新加载。这在某种程度上甚至是部分真实的吗?
我遇到的一个问题是,在调整大小时丢失上下文很不方便,我使用ALOT GPU内存,并且不得不重新加载所有内容,可能会暂停应用程序(但时间长于我的愿望) 。
这是一个与设备相关的事物或驱动程序依赖?它是设备,驱动程序和SDL版本的组合吗?如何检测到这种情况下的损失,以便我可以对此做出反应?
标准做法是保持所有gl缓冲区内容的系统内存内容,以便它们可以在上下文丢失时重新加载?或者是一种罕见的情况下损失,这是不标准的做法?
我们需要在某个时候看到OpenGL上下文丢失的程序代码。 – Vallentin