我的程序在編譯着色器,加載紋理等時從加載窗口開始。然後,我希望能夠啓動全屏應用程序並使用這些資源。我的理解是openGL上下文在前後必須相同。我爲此嘗試了兩種方法:首先,我嘗試製作第二個全屏的窗口,並在此窗口上使用SDL_GL_makecurrent命令將上下文「轉移」到(無法找到關於此方法的位置),其次試圖只是全屏顯示加載窗口。這兩種方法都導致加載屏幕移動到屏幕的左上角。然而,opengl命令不再以全屏方式正常運行,包括清除緩衝區,這意味着窗口包含了我的桌面/後臺應用程序的內容。使用openGL在SDL2中全屏顯示一個窗口
有沒有適當的方法來做到這一點?或者這是sdl/opengl驅動程序中的一個奇怪的錯誤?
代碼以全屏原來的窗口:
//opengl commands work fine up to here
//now to fullscreen
SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP);
SDL_SetWindowSize(window, 1366, 768); //tried this on either side of line above and without either line
glViewport(0, 0, 1366, 768); //update viewport
glClearColor(1, 1, 1, 1);
glClear(GL_COLOR_BUFFER_BIT);
//window should be whited, other draw commands tried and all fail or distort
SDL_GL_SwapWindow(window);
創建一個新的窗口,再使用以前的背景:
//Fine up to here
window2 = SDL_CreateWindow("Window", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1366, 768, SDL_WINDOW_OPENGL | SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_SHOWN);
SDL_GL_MakeCurrent(window2, glContext); //created with SDL_GL_CreateContext(oldwindow);
//draw commands dont work
PS:運行Ubuntu
更新:在第二個代碼,在新窗口中重用上下文,當它失敗時返回一個錯誤,說'無效窗口',這是大部分時間,但不是總是。當它失敗時,屏幕結束完全損壞(黑色與怪異的白色方塊和圖案),結束程序不會清除這個屏幕(雖然截圖是完美的罰款?),但它可以恢復ctrl + F1到終端,然後CTRL + F7 回