所以,我在 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(重置缓冲区等)。
那么,有什么建议吗?真心感谢!