2017-08-04 79 views
-1

我有一個簡單的遊戲,使用LWJGL 2,我希望它能夠獲得給定窗口大小的最佳分辨率。

看來,這與DisplayMod有關,但如果我不在FullScreen mod中,它不會改變遊戲分辨率,它只是調整窗口大小。

我能夠通過以下方式在FullScreen中執行我想要的操作:Display.setDisplayMode(DisplayMode),但正如我所說,如果顯示器不是全屏模式,它只是更改窗口大小,而不是分辨率。

所以我的問題是,如何在沒有全屏/調整窗口大小的情況下獲得更好的分辨率?

編輯(2017年4月8日):
爲了幫助你理解我的問題,我有一個條記錄短片時,切換到全屏/窗口化:https://www.mediafire.com/file/j9t06qa3aaw9e59/Resolution%20bug.mov更改屏幕分辨率,無需調整窗口大小或使用全屏(LWJGL 2)

回答

0

爲了設置分辨率,您將需要使用幀緩衝區。您將需要渲染到幀緩衝區,然後當您準備好將正確分辨率的幀緩衝區發送到屏幕時,您將幀緩衝區閃爍到窗口的後臺緩衝區。這是一個tutorial,雖然在C++中。這應該讓你指出正確的方向!

0

要更改全屏遊戲分辨率當您創建框架中庸之道把

Display.setFullscreen(true); 

,並創建DISPLAYMODE

ArrayList<DisplayMode> Mode = new ArrayList<DisplayMode>(); 

的一個新的ArrayList後,後創建新的ArrayList得到所有的屏幕尺寸支持by your graphic cards

try { 
    DisplayMode[] modes; 
     modes = Display.getAvailableDisplayModes(); //get all resolution 
    for (int i=0;i<modes.length;i++) { 
     DisplayMode current = modes[i]; //add all DisplaMode to arraylist 
     Resolutions.add(current); 
    } 
    } catch (LWJGLException e) { 
     e.printStackTrace(); 
    } 
    for (DisplayMode mode : Resolutions) { //optional just to see all resolution 
     System.out.println(mode.getWidth() + "x" + mode.getHeight() + "x"+mode.getBitsPerPixel() + " " + mode.getFrequency() + "Hz"); 
    } 

並加載DisplayMode

Display.setDisplayMode(Mode.get(int)); 
+0

但是,如果我設置由Display.getAvailableDisplayModes()給出的最佳可能的解決方案;但沒有FullScreen,我會得到窗口模組的分辨率? (我現在無法測試) –

+0

If Fullscreen = true如果Fullscreen = false,將調整所有屏幕的大小,只調整窗口大小[Like This(By me)](https://www.youtube.com/watch?v = -vw8QlHUHtI)我希望這會幫助你如果你只想要一個完整的大小理由 Display.setResizable(true); 並點擊全屏按鈕 – Blackoutburst

+0

因此,沒有辦法通過固定的窗口顯示大小獲得更好/更改的分辨率? –