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