如何改变OpenTK的视口分辨率
本文关键字:OpenTK 视口 分辨率 改变 何改变 | 更新日期: 2023-09-27 17:54:29
我正在使用OpenTk GameWindow。我一直在为我的项目添加图形设置。但我不知道如何正确地改变分辨率或在运行时进入或退出全屏模式。
有人能解释一下在游戏运行时改变分辨率和/或全屏状态的正确程序吗?
使用WindowState = WindowState.Fullscreen;
和WindowState = WindowState.Fullscreen;
工作,但他们修改了查看区域和设置GL.Viewport不能修复它。
我目前正在用DisplayDevice.GetDisplay(DisplayIndex.Default).ChangeResolution
更改监视器分辨率
如果您不是全屏模式,您可以通过简单地调用GameWindow
对象上的Size
属性来调整窗口的大小。您已经知道WindowState
属性。
您需要做的主要事情是覆盖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的概念已经够麻烦的了,更不用说三维了!
希望能有所帮助
看看GameWindow的构造器。它们大多以宽度和高度作为第一参数。全屏是通过GameWindowFlags参数设置的