C++ 跨平台 nanosecond/microsecond 计时器?

C++ Cross platform nanosecond/microsecond timer?

我目前正在编写一个SDL2游戏引擎,到目前为止它运行良好,但有一个问题是SDL2无法解决的:一个像样的计时器。现在,它使用默认的 SDL2 计时器,但它只支持毫秒;这对于测量 FPS 不是很好。主要问题是在 500FPS 和 1000FPS 之间没有任何区别,所以它是一个或另一个。显然,潜在的游戏玩家会想要比这更准确的东西,而从这些数字中获得准确的平均值几乎是不可能的。

所以我的问题是有没有任何时钟库可以提供 nanosecond/microsecond(最好是前者)时间测量 Windows、Mac 和 Linux? (甚至 Android 和 iOS,但这有点牵强。)

如果没有,每个 OS 是否有不同的库,我可以 #if WINDOWS 或其他仍然获得 nanosecond/microsecond 时间的东西?

编辑:评论指出这里应该有更多信息,所以我使用的是 C++ 14,并且也会在 Mac 和 Linux 上。在 Windows 上,我使用 MSVC (Visual Studio),我计划在 Mac 上使用 XCode,但对 Linux 不太确定。将作为朋友。

我最近一直在学习这个新库,我认为它可能能够帮助您解决问题。

SFML http://www.sfml-dev.org/tutorials/2.3/

SFML/time http://www.sfml-dev.org/tutorials/2.3/system-time.php

希望对您有所帮助。

std::chrono 是什么?稳定的时钟可能没问题。

GLFW 有一个非常准确的计时器。据我所知,这是一个毫秒计时器。 GLFW 也是一个相当不错的库,用于 window 管理和输入,例如 mouse/keys/gamepads 等。

http://www.glfw.org/docs/3.0/group__time.html