2
要在沒有模式集的情況下在SDL2中執行「假」全屏窗口,可以使用類似的方法創建無邊框,最大化窗口。SDL2切換SDL_WINDOW_RESIZABLE狀態爲假全屏
int idx = SDL_GetWindowDisplayIndex(g_displayWindow);
SDL_Rect bounds;
SDL_GetDisplayBounds(idx, &bounds);
//SDL_SetWindowResizable(g_displayWindow, SDL_FALSE);
SDL_SetWindowBordered(g_displayWindow, SDL_FALSE);
SDL_SetWindowPosition(g_displayWindow, bounds.x, bounds.y);
SDL_SetWindowSize(g_displayWindow, bounds.w, bounds.h);
對於不可調整大小的窗口,此功能完美無缺。在使用SDL_WINDOW_RESIZABLE創建的窗口上,屏幕的底部和右邊緣(窗口上)有一個惱人的灰色邊框。不幸的是,沒有SDL_SetWindowResizable函數(從SDL 2.0.4開始)。如何在不重新創建窗口的情況下襬脫調整邊界?
SDL_WINDOW_FULLSCREEN_DESKTOP和SDL_WINDOW_FULLSCREEN都這樣做,我想避免modeset - 它需要更長的時間,這是很難使用Alt-Tab出來的,如果遊戲中的調試器遇到斷點,可以鎖定了整個系統。
SDL_WINDOW_FULLSCREEN_DESKTOP不應該像SDL_WINDOW_FULLSCREEN那樣引起顯示模式的完全切換。他們的行爲是否等同於你?它適用於這種情況,您希望一個未填充的窗口填滿整個屏幕,並且您希望它以跨平臺的方式完成。 – 2014-12-04 20:31:47
我做了SDL_WINDOW_FULLSCREEN_DESKTOP。它似乎沒有做一個顯示模式切換。但它鎖定在調試器中斷(在單屏系統上)。然而,將窗口設置爲完整的顯示大小具有相同的行爲。通過睡覺和喚醒筆記本電腦可以回到VS。 : - / – 2016-02-17 18:40:53