0

というわけで、XNAで2Dゲームを作っています。いつもはウィンドウモードで開発していたのですが、フルスクリーンにしてみました。ほとんどの部分で問題なく動作しますが、重要な部分で失敗します。それは、Windows キーまたは ALT-TAB を使用してゲームを終了し (フォーカスを外して)、戻ったときです (ここでクラッシュします)。

SpriteBatches のみを使用します。

Visual Studio でデバッグ情報が返されませんが、これはグラフィック部分で問題が発生したためです。

これはメイン コンストラクターです (元は Game1 と呼ばれていました)。

      public Main()
      {
        status = StatusIgre.GlavniMenu; 

        Content.RootDirectory = "Content";
        gameEndTimer = new Stopwatch();

        graphics = new GraphicsDeviceManager(this);

        graphics.PreferredBackBufferHeight = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height;
        graphics.PreferredBackBufferWidth = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width;
        graphics.IsFullScreen = true;

    }
    }

私もこれを試しました:

protected override void Initialize()
    {
        //kamera oziroma viewport
        camera = new Camera(new Vector2(400,250), GraphicsDevice);

        previousState = Keyboard.GetState();

        graphics.GraphicsDevice.DeviceLost += new EventHandler<EventArgs>(GraphicsDevice_DeviceLost);

        base.Initialize();
    }

    void GraphicsDevice_DeviceLost(object sender, EventArgs e)
    {
        PresentationParameters parameters = new PresentationParameters();

        parameters.BackBufferHeight =       GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height;
        parameters.BackBufferWidth  =  GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width;

        GraphicsDevice.Reset(parameters);

    }

GraphicsDevice_DeviceLost で 'throw Exception()' も試しましたが、例外は表示されないようです。私の推測では、この関数を呼び出すことすらありません。

すでにこれについてGoogleで検索しましたが、これに関する情報は貧弱で、ほとんどが3D(バッファのリセットなど)に関するものです。

それで、何か提案はありますか?本当にありがとう!

4

0 に答える 0