c#Xna关闭了FixedTimeStep,但仍然更新了最大呼叫数.60次

cru*_*ice 0 c# xna

大家好我刚刚制作了一个小算法来显示我的屏幕上的fps.

        frames_temp++;
        frames_Time += (int)gameTime.ElapsedGameTime.TotalMilliseconds;
        if (frames_Time >= 1000)
        {
            frames = frames_temp;
            frames_temp = 0; frames_Time = 0;
        }
Run Code Online (Sandbox Code Playgroud)

剪切的代码位于Update-method中.帧变量存储绘制到屏幕的实际值(只是发布该代码,以确保没有错误,尽管我已经检查过它).现在的问题是我无法关闭IsFixedTimeStep.我在构造函数中设置为false,初始化甚至更新方法,但程序仍将我的fps限制为~60.我要么在我的update-method中输入for()查询,运行数百万个循环而没有帧丢失,以确保它不是我的cpu太慢.我已经尝试的另一件事是使用我自己的timeSpan和系统时间来获取调用Update()之间经过的时间,这给了我相同的输出.现在99%确定更新每秒只运行60次.

那么为什么我不能像IsFixedTimeStep为假时那样经常调用Update-Method

Ty回复

Mat*_*har 5

我相信你的问题是垂直同步,图形设备的这个功能是将帧速率锁定到你的显示器刷新率.要解决此问题,您需要在以下位置关闭VSync(SynchronizeWithVerticalRetrace)GraphicsDeviceManager:

graphicsDeviceManager.SynchronizeWithVerticalRetrace = false;
graphicsDeviceManager.ApplyChanges();
Run Code Online (Sandbox Code Playgroud)

graphicsDeviceManager 是你的游戏 GraphicsDeviceManager