【问题标题】:Only Execute on Certain Frames in SFML仅在 SFML 中的某些帧上执行
【发布时间】:2013-08-15 22:41:28
【问题描述】:

我对 SFML 还很陌生,现在我正在尝试制作一个基本的滚动平面游戏。我已经完成了大部分基本内容,但我开始注意到屏幕看起来很迟钝。我正在使用 window.setFrameRateLimit 函数,以便所有计算机上的移动结果都相同,但它会在程序执行时发生随机延迟峰值。我认为它这样做是因为帧速率的限制,以及它是如何做到的。还有另一种更好的方法让程序只在特定时间执行吗?理想情况下,它在速度较慢的计算机上也能以相同的速度移动。

【问题讨论】:

    标签: c++ frame sfml


    【解决方案1】:

    似乎 setFrameRateLimit 滞后峰值已在 SFML 2.0 中修复。如果您无法升级到 SFML 2.0,那么您可以添加自己的帧速率限制器。这包括在你的游戏循环中添加一个 sleep()。例如:

    while(App.IsOpened()) {
       float time = Clock.GetElapsedTime();
    
       // update game
       // draw game
    
       float timeToWait = (1.0 / FRAMES_PER_SECOND) - (Clock.GetElapsedTime() - time);
       if(timeToWait > 0) {
           sleep(timeToWait * 1000);
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 2022-01-02
      • 2012-12-31
      相关资源
      最近更新 更多