存储LARGE_INTEGER / LARGE_INTEGER的结果

时间:2014-03-22 13:48:07

标签: c++ performance timer

我正在尝试为我正在制作的游戏开发一个简单的Timer类。现在,这个类所做的就是计算帧为一些FPS计算呈现的时间长度。

我正在使用Window的QueryPerformanceCounter函数(here)来获得尽可能高的分辨率(我已经通过QueryPerformanceFrequency获得了计算机的计数器频率)

这是我的功能,以秒为单位获取最后一帧的时间:

void update_time() { last = current; counter(&current); 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。我认为这是因为划分的结果是如此之小,以至于双打不能存储它?我可以使用更大的数据结构吗?

1 个答案:

答案 0 :(得分:0)

哎呀,我完全忘了做整数除法除去了小数部分,无论你如何存储它:)改变最后一行:

last_frame_time_secs = (double)last_frame_time / (double)timer_frequency.QuadPart;

修好了。