我使用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中所述,该问题已在非官方版本中修改(在撰写本文时)。
答案 0 :(得分:0)
尝试将graphics
代码移至base.Initialize
调用之后 - 这是因为系统尚未初始化,并初始化为某些默认设置。通常情况下,我们会希望能够在游戏过程中(即初始化后)更改图形,以防用户更改游戏中的任何设置。