Если вы не в полноэкранном режиме, вы можете изменить размер окна, просто вызвав свойство 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 в двух измерениях, не говоря уже о трех!
Надеюсь, это поможет