0

所以,我在 XNA 中制作 2D 游戏。我一直在窗口模式下开发它,但现在我尝试全屏。它适用于大多数部分,但关键部分失败了,那就是当我通过 Windows 键或 ALT-TAB 退出游戏(散焦)然后返回(这是它崩溃的地方)。

我只使用 SpriteBatches。

它在 Visual Studio 中没有返回任何调试信息,但那是因为图形部分发生了一些不好的事情。

这是 Main 构造函数(最初称为 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()”,但它似乎没有显示任何异常。我猜它甚至没有调用这个函数。

已经在谷歌上搜索过这个,但是这方面的信息很差,主要是 3D(重置缓冲区等)。

那么,有什么建议吗?真心感谢!

4

0 回答 0