我正在尝试为我正在制作的游戏开发一个简单的Timer类。现在,这个类所做的就是计算帧为一些FPS计算呈现的时间长度。
我正在使用Window的QueryPerformanceCounter函数(here)来获得尽可能高的分辨率(我已经通过QueryPerformanceFrequency获得了计算机的计数器频率)
这是我的功能,以秒为单位获取最后一帧的时间:
void update_time()
{
last = current;
counter(¤t);
last_frame_time = current.QuadPart - last.QuadPart;
last_frame_time_secs = last_frame_time / timer_frequency.QuadPart;
}
目前,last_frame_time_secs是一个双变量。当我编译时,我收到一个警告:
warning C4244: '=' : conversion from 'LONGLONG' to 'double', possible loss of data
和last_frame_time_secs始终为0.0。我认为这是因为划分的结果是如此之小,以至于双打不能存储它?我可以使用更大的数据结构吗?
答案 0 :(得分:0)
哎呀,我完全忘了做整数除法除去了小数部分,无论你如何存储它:)改变最后一行:
last_frame_time_secs = (double)last_frame_time / (double)timer_frequency.QuadPart;
修好了。