我有一个函数,其中包含以下代码:
GameStateManagementGame.GraphicsDeviceManager.PreferredBackBufferWidth = width;
GameStateManagementGame.GraphicsDeviceManager.PreferredBackBufferHeight = height;
GameStateManagementGame.GraphicsDeviceManager.IsFullScreen = isFullScreen;
GameStateManagementGame.GraphicsDeviceManager.ApplyChanges();
当在应用程序启动时调用它时,如果 isFullScreen = true,即使宽度和高度与桌面分辨率相同,也会出现一到两秒的非常明显的屏幕闪烁。如果我没有 ApplyChanges();调用这不会发生(但设置确实会应用)。如果我在游戏完全开始后调用该函数而没有调用 ApplyChanges(),则不会应用设置。
现在我可以通过在启动时添加一些内容来跳过 ApplyChanges() 调用来解决这个问题,但我想知道为什么会发生这种情况。
我设法找到的有关此问题的唯一信息表明,如果您使用与桌面相同的分辨率或提供了过于复杂和损坏的解决方法,则不应发生闪烁。
所以我的问题是上述行为的原因是什么以及最好的解决方法是什么?
您设置的设置GraphicsDeviceManager
适用于这些情况:
- 如果你打电话
ApplyChanges()
- 如果你打电话
ToggleFullScreen()
- By
Game
when Game.Run()
被调用(它创建图形设备)
值得注意的是,修改任何设置都会not使这些设置立即应用。
闪烁的可能原因是您正在执行#3,然后立即执行#1(您连续两次应用设置)。
对于初始启动,您应该在上设置正确的设置GraphicsDeviceManager
游戏类的构造函数中的实例。那么这些设置将是正确的Game.Run()
叫做。
Use ApplyChanges()
仅当用户在游戏运行时更改设置时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)