У меня интересная, но странная проблема с игровым таймером. Кажется, что миллисекунды работают просто отлично. Однако, когда я пытаюсь применить приведение 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();
};
Таймер срабатывает один раз за кадр. Так, например, я обычно получаю около 33 мс на кадр. 33ms / 1000 = 0.033s
секунд, так что должно быть достаточно битового пространства для этого.
Любые идеи о том, что, возможно, происходит?
Любая помощь приветствуется!
РЕДАКТИРОВАТЬ: извините, секунды, а не миллисекунды
0.000
? Вы говорите, что бросили на поплавок - куда? - person Joseph Mansfield   schedule 20.12.2013