我正在尝试让我的游戏自动将窗口大小设置为显示器的正确分辨率。 例如,我的桌面电脑分辨率为1920x1080,所以我希望我的游戏在1920x1080运行,但我的笔记本电脑是1366x768,所以我希望我的游戏在那里运行1366x768等等。
我尝试了很多不同的东西,比如GraphicsDevice.Adapter.CurrentDisplayMode.Width / Height,甚至打印出GraphicsDevice.Adapter.SupportedDisplayModes列表,它们都告诉我,支持的唯一显示模式是800x600 。肯定不是这样,因为我在1920x1080运行Windows 7。
那么我到底做错了什么?我尝试将此代码放在Game1构造函数中,初始化器,我无法弄清楚它为什么不能正常工作!
答案 0 :(得分:1)
好的我修好了。我只是意识到自己有点愚蠢,因为我忘了提到这个" MonoGame"应用程序,而不是一个直接的XNA项目...(我没想到它会有所作为,但我错了)..
事实证明,MonoGame有一个与图形设备有关的大问题,并且有一种方法可以解决它(从最新的源码或其他东西构建?)但我做的是安装XNA 4.0 Refresh for Visual Studio 2013,并将我的所有源代码复制到新的XNA项目而不是MonoGame项目。
并且嘿presto,GraphicsDevice.DisplayMode.Width和Height现在正确地注册为1920和1080像素。所以现在我可以继续我的游戏了。
感谢所有试图帮助我解决这个问题的人!
答案 1 :(得分:0)
您可以通过调整图形来设置构建器中游戏的分辨率。 PreferredBackBufferWidth和PreferredBackBufferHeight:
例如,这将产生一个480x320的游戏窗口:
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
graphics.PreferredBackBufferHeight = 320;
graphics.PreferredBackBufferWidth = 480;
}
请记住,在窗口模式下,您的游戏(默认情况下)会有一个标题栏,可以防止游戏窗口像您的全屏一样大。
答案 2 :(得分:0)
这是关于如何获得最大支持分辨率的方法(并设置它,作为澄清它的示例):
// in the Initialize method
graphics.PreferredBackBufferWidth = GraphicsDevice.DisplayMode.Width;
graphics.PreferredBackBufferHeight = GraphicsDevice.DisplayMode.Height;
graphics.IsFullScreen = false;
graphics.ApplyChanges(); // <-- not needed in the Game constructor
但是,我不知道你做错了什么。