0

OpenTk GameWindow を使用しています。プロジェクトにグラフィック設定を追加しています。しかし、実行時に解像度を正しく変更したり、フルスクリーン モードに切り替えたりする方法がわかりません。

ゲームの実行中に解像度やフルスクリーン状態を変更する正しい手順を誰か説明してください。

使用WindowState = WindowState.Fullscreen;してWindowState = WindowState.Fullscreen;動作しますが、表示領域を変更し、GL.Viewport を設定しても修正されません。

現在、モニターの解像度を変更していますDisplayDevice.GetDisplay(DisplayIndex.Default).ChangeResolution

4

2 に答える 2

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 ビューポート用です... 3 どころか 2 次元で OpenGL の概念を理解するのに十分な問題があります!

お役に立てれば

于 2011-05-30T20:58:22.503 に答える
0

GameWindow コンストラクターを見てください。それらのほとんどは、最初のパラメーターとして幅と高さを取ります。フルスクリーンは GameWindowFlags パラメーターで設定されます。

于 2011-05-02T19:01:04.790 に答える