所以有趣的是我從未有過的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