2016-02-19 32 views
-2

我目前正在編寫一款SDL2遊戲引擎,迄今爲止效果還不錯,但SDL2無法解決的一個問題是:體面的計時器。現在,它使用默認的SDL2定時器,但它只有毫秒支持;這對於測量FPS並不是很好。主要的問題是在500FPS和1000FPS之間沒有任何東西,所以它是一個或另一個。顯然,潛在的玩家會希望得到比這更精確的東西,從這些數字中獲得準確的平均值幾乎是不可能的。C++跨平臺納秒/微秒定時器?

所以我的問題是,是否有任何時鐘庫可以提供納秒/微秒(最好是前者)在Windows,Mac和Linux上的時間測量? (也許即使Android和iOS,但這是有點延伸)

如果不是,每個操作系統有不同的庫我可以只#if WINDOWS或任何仍然可以獲得納秒/微秒的時間?

編輯:一條評論指出,一些更多的信息應該在這裏,所以我使用C++ 14,並且將在Mac和Linux上。在Windows上,我使用MSVC(Visual Studio),並計劃在Mac上使用XCode,但不太確定Linux。將作爲朋友。

+0

是否使用'C++ 11'或更高版本? –

+0

@MohitJain我在帖子中增加了更多信息。 – Vulkan

+0

你可以選擇一個解決方案:http://stackoverflow.com/questions/2808398/easily-measure-elapsed-time –

回答

1

關於std::chrono是怎麼回事?穩定的時鐘可以很好。

+0

Upvoted。即使底層操作系統支持納秒精度,SFML的精度也受限於微秒。 'std :: chrono'具有優越的功能,可移植性和語法(特別是在C++ 14中)。 –

0

GLFW有一個非常準確的計時器。就我所知,這是一個毫秒級的計時器。 GLFW也是窗口管理以及諸如鼠標/按鍵/遊戲手柄等輸入一個相當不錯的圖書館..

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