如何在OpenTK中更改视口分辨率

时间:2011-05-02 14:56:51

标签: c# opengl resolution viewport opentk

我正在使用OpenTk GameWindow。我一直在为我的项目添加图形设置。但我无法弄清楚如何在运行时正确更改分辨率或进入或退出全屏模式。

有人可以解释在游戏运行期间更改分辨率和/或全屏状态的正确程序。

使用WindowState = WindowState.Fullscreen;WindowState = WindowState.Fullscreen;工作,但他们修改了查看区域并设置了GL.Viewport无法修复它。

我目前正在使用DisplayDevice.GetDisplay(DisplayIndex.Default).ChangeResolution

更改显示器分辨率

2 个答案:

答案 0 :(得分:3)

如果您未处于全屏模式,只需调用Size对象上的GameWindow属性即可调整窗口大小。您已经了解WindowState属性。

您需要做的主要事情是覆盖OnResize课程中的GameWindow方法。调整游戏窗口大小时会自动调用此选项,包括将其设置为全屏模式。从那里,您可以重新初始化视口。

例如,在我正在测试的项目中,每当我调整窗口大小或进入/退出全屏模式时,以下代码都会正确调整视口大小。虽然在转换到全屏模式时我没有使用分辨率切换,但我认为它也可以很好地工作。在下面的示例中,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概念,更不用说三个了!

希望这有帮助

答案 1 :(得分:0)

查看GameWindow构造函数。他们中的大多数都将宽度和高度作为第一个参数。全屏通过GameWindowFlags参数设置。