2011-05-02 23 views
0

視分辨率我使用OpenTk GameWindow。我一直在爲我的項目添加圖形設置。但我無法弄清楚如何在運行時正確地更改分辨率或進入或退出全屏模式。如何更改OpenTK

能有人請解釋正確的步驟來改變,而遊戲運行時的分辨率和/或全屏狀態。

使用WindowState = WindowState.Fullscreen;WindowState = WindowState.Fullscreen;工作,但他們修改查看區域並設置GL.Viewport不能修復它。

我現在改變與DisplayDevice.GetDisplay(DisplayIndex.Default).ChangeResolution

回答

0

看那GameWindow構造顯示器的分辨率。他們大多數將寬度和高度作爲他們的第一個參數。全屏通過GameWindowFlags參數設置。

+0

我知道如何在創建GameWindow時設置窗口。我需要知道如何在遊戲運行時更改分辨率和全屏狀態。 – KobraX22 2011-05-03 05:20:38

+0

@ KobraX22。哦,對不起,我誤解了你的問題。你有沒有嘗試過OpenTK論壇? – kvark 2011-05-03 10:29:14

+0

我現在來看看。 – KobraX22 2011-05-03 10:38:13

2

如果您不處於全屏模式,只需調用GameWindow對象上的Size屬性即可調整窗口大小。你已經知道WindowState propery。

,你需要做的主要事情是覆蓋你的GameWindow類的OnResize方法。當你的遊戲窗口被調整大小時,這會自動調用,包括將其設置爲全屏模式。從那裏,你可以重新初始化你的視口。

例如,在我目前正在測試的項目,下面的代碼正確調整大小,每當我調整窗口大小或移動/退出全屏模式查看端口。雖然移動到全屏模式時,我沒有利用的分辨率切換,我會想象它會工作得很清楚了這一點。在下面的例子是yoursizehere和640x640使用GL.Ortho方法以適合GameWindow.ClientSize被縮放。 (我在OpenTK(和OpenGL爲此事新手),所以我還是有一噸要學會自己 - 但下面的工作對我來說)

protected override void OnResize(EventArgs e) 
{ 
    base.OnResize(e); 

    GL.Viewport(this.ClientRectangle); 
    GL.MatrixMode(MatrixMode.Projection); 
    GL.LoadIdentity(); 
    GL.Ortho(0, yoursizehere.Width, yoursizehere.Height, 0, -1, 0); 
} 

上面的例子是這是一個2D視口我目前正在嘗試......有足夠的麻煩去理解二維空間中的OpenGL概念,更不用說三個!

希望這會有所幫助