ゲーム タイマーで興味深い、しかし奇妙な問題が発生しています。ミリ秒がうまく機能しているようです。ただし、キャストを適用しようとすると、フロートにキャストするstd::chrono::seconds
と突然取得されます。0.000000
私のタイマーは次のとおりです。
#include <iostream>
#include <time.h>
#include <chrono>
class Timer
{
public:
typedef std::chrono::high_resolution_clock Time;
typedef std::chrono::milliseconds ms; //<--If changed to seconds, I get 0.00000
typedef std::chrono::duration<float> fsec;
std::chrono::high_resolution_clock::time_point m_timestamp;
float currentElapsed;
Timer()
{
m_timestamp = Time::now();
}
float getTimeElapsed()
{
return currentElapsed;
}
void Tick()
{
currentElapsed = std::chrono::duration_cast<ms>(Time::now() - m_timestamp).count();
m_timestamp = Time::now();
}
public:
//Singleton stuff
static Timer* Instance();
static void Create();
};
タイマーはフレームごとに 1回ティックされます。たとえば、通常、フレームあたり約 33 ミリ秒を取得します。33ms / 1000 = 0.033s
秒なので、それを保持するための十分なビットスペースが必要です。
何が起こっているのかについてのアイデアはありますか?
どんな助けでも大歓迎です!
編集:申し訳ありませんが、ミリ秒ではなく秒です