Как изменить разрешение области просмотра в OpenTK - PullRequest
0 голосов
/ 02 мая 2011

Я использую OpenTk GameWindow. Я добавляю настройки графики в свой проект. Но я не могу понять, как правильно изменить разрешение или войти или выйти из полноэкранного режима во время выполнения.

Может кто-нибудь объяснить правильную процедуру изменения разрешения и / или полноэкранного состояния во время игры.

Использование WindowState = WindowState.Fullscreen; и WindowState = WindowState.Fullscreen; работает, но они изменяют область просмотра и настройка GL.Viewport не исправляет это.

В настоящее время я изменяю разрешение монитора с помощью DisplayDevice.GetDisplay(DisplayIndex.Default).ChangeResolution

Ответы [ 2 ]

3 голосов
/ 31 мая 2011

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

Надеюсь, это поможет

0 голосов
/ 02 мая 2011

Посмотрите на конструкторы GameWindow. Большинство из них принимают ширину и высоту в качестве своих первых параметров. Полноэкранный режим задается с помощью параметра GameWindowFlags.

...