MonoGame GraphicsDevice.DisplayMode无效

时间:2015-01-13 16:30:19

标签: c# fullscreen monogame

我使用MonoGame创建了一个简单的测试应用程序(版本3.2,编写本文时的最后一个官方版),但我无法使应用程序全屏显示。

我在别处找到了这段代码:

protected override void Initialize()
{
    graphics.IsFullScreen = true;
    graphics.PreferredBackBufferWidth = GraphicsDevice.DisplayMode.Width;
    graphics.PreferredBackBufferHeight = GraphicsDevice.DisplayMode.Height;
    graphics.ApplyChanges();

    Window.IsBorderless = true;
    Window.Position = new Point(0, 0);

    base.Initialize();
}

但问题是GraphicsDevice.DisplayMode总是返回800x600的屏幕尺寸。此外,GraphicsAdapter.Adapters集合仅包含一个适配器,具有单个支持的显示模式(800x600)。

这可能是什么问题?我目前的分辨率是1920x1080,如果我将两个显示器连接为扩展桌面(这是我常用的设置),我会得到相同的结果。

更新

最后,我只添加了对System.Windows.Forms的引用并使用了:

graphics.IsFullScreen = true;
graphics.PreferredBackBufferWidth = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
graphics.PreferredBackBufferHeight = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
graphics.ApplyChanges();

我仍然想知道为什么MonoGame没有正确检测到任何适配器/屏幕。

更新2 this answer中所述,该问题已在非官方版本中修改(在撰写本文时)。

1 个答案:

答案 0 :(得分:0)

尝试将graphics代码移至base.Initialize调用之后 - 这是因为系统尚未初始化,并初始化为某些默认设置。通常情况下,我们会希望能够在游戏过程中(即初始化后)更改图形,以防用户更改游戏中的任何设置。