作者jflin15 (Cilia)
看板GameDesign
标题[转录][问题] TimeGetTime(); 和真实时间有误差
时间Thu Oct 28 04:40:42 2010
※ [本文转录自 C_and_CPP 看板 #1Co8tlml ]
作者: turtle314 (会弹吉他屌屁) 看板: C_and_CPP
标题: [问题] TimeGetTime(); 和真实时间有误差
时间: Thu Oct 28 04:39:07 2010
遇到的问题: 使用TimeGetTime函式会有误差
希望得到的正确结果: 能够真正配合真实时间,不因每台电脑算的
帧数不同而有落差。
程式跑出来的错误结果: 约真实时间十秒钟时,程式时间只到约八秒钟
开发平台: Win32 API
有问题的code: (请善用置底文标色功能)
if(gettime == 0){
starttime=timeGetTime();
gettime=1;
}
currenttime=timeGetTime();
if(currenttime-starttime >= 10){
timemin+=1;
gettime=0;
}
补充说明: 由於我们做的是一款音乐游戏,对於时间的准确度是满要求的
但是开始做了一段时间,想要请同组组员帮忙测试游戏才发现每个人电脑不一样,导致
音符落下来速度不一,因此时间形同虚设。网路上有爬到可以透过FPS锁定每个人电脑
速度,不过试了半天还是没有办法把FPS放进程式内;还有爬到用更精确的计时器来做
运算,可是......也是同样没成功。
if(currenttime - starttime >=10)的误差约现实时间十秒才跑到八秒左右
if(currenttime - starttime >=100)的误差约十三、十四秒差一秒钟左右
有点急,想请教乡民们,谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 192.192.154.44
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 192.192.154.45
1F:推 elfria:不是吧@@...还是你用getTime来取系统时间差, 与timeGettime 10/28 05:09
2F:→ elfria:做比较..至少GetTime是准确的 10/28 05:09
3F:推 dbstudio:找一下这个 timeBeginPeriod / timeEndPeriod 10/28 19:50
4F:→ jellyice:误差是因为code的问题吧?你时间怎麽算的?用timemin? 10/28 21:22
5F:→ jellyice:你>=10时timemin+=1,但>=10可能是12、14、19甚至25、26 10/28 21:22
6F:→ jellyice:你都嘛+=1,那当然算起来就少了时间,而且从gettime=0; 10/28 21:23
7F:→ jellyice:到starttime=timeGetTime();经过了多久?这段时间都没算 10/28 21:23
8F:→ jellyice:零零碎碎的时间加起来,误差就产生了,也因此你>=100时误 10/28 21:26
9F:→ jellyice:差会比较小,因为舍弃零碎时间的次数少,误差就小了 10/28 21:27