Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XNA GraphicsDeviceManager.ApplyChanges()在应用程序启动时调用时会导致闪烁_C#_.net_Xna - Fatal编程技术网

C# XNA GraphicsDeviceManager.ApplyChanges()在应用程序启动时调用时会导致闪烁

C# XNA GraphicsDeviceManager.ApplyChanges()在应用程序启动时调用时会导致闪烁,c#,.net,xna,C#,.net,Xna,我有一个函数,其中包含以下代码: GameStateManagementGame.GraphicsDeviceManager.PreferredBackBufferWidth = width; GameStateManagementGame.GraphicsDeviceManager.PreferredBackBufferHeight = height; GameStateManagementGame.GraphicsDeviceManager.IsFullScreen = isFullScre

我有一个函数,其中包含以下代码:

GameStateManagementGame.GraphicsDeviceManager.PreferredBackBufferWidth = width;
GameStateManagementGame.GraphicsDeviceManager.PreferredBackBufferHeight = height;
GameStateManagementGame.GraphicsDeviceManager.IsFullScreen = isFullScreen;
GameStateManagementGame.GraphicsDeviceManager.ApplyChanges();
当在应用程序启动时调用它时,如果isFullScreen=true,即使宽度和高度与桌面分辨率相同,也会有非常明显的屏幕闪烁一秒或两秒。如果我没有ApplyChanges();调用此选项不会发生(但设置会被应用)。如果我在游戏完全启动后调用该函数,而没有ApplyChanges()调用,则不会应用设置

现在我可以通过在启动时跳过ApplyChanges()调用来解决这个问题,但我想知道为什么会发生这种情况

我找到的关于这个问题的唯一信息是,如果您使用与桌面相同的分辨率,或者提供了过于复杂和不完善的解决方法,则不应发生闪烁


因此,我的问题是,上述行为的原因是什么?最佳解决方法是什么?

GraphicsDeviceManager
上设置的设置适用于以下情况:

  • 如果调用
    ApplyChanges()
  • 如果调用
    ToggleFullScreen()
  • 当调用
    Game.Run()
    时,通过
    Game
    (它创建图形设备)
  • 请注意,修改任何设置都不会立即应用这些设置

    闪烁的可能原因是您正在执行#3,然后立即执行#1(您正在连续应用两次设置)

    对于初始启动,您应该在游戏类的构造函数中在
    GraphicsDeviceManager
    实例上设置正确的设置。当调用
    Game.Run()
    时,这些设置将是正确的

    仅当用户在游戏运行时更改设置时,才使用
    ApplyChanges()