作者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
※ jflin15:轉錄至看板 GameDesign 10/28 04:40
推 loveme00835:試試 QueryPerformanceCounter/Frequency 10/28 08:10
→ stupid0319:用GetTickCount()會不會比較好 10/28 08:53
→ stupid0319:推QueryPerformanceCounter/Frequency 10/28 08:57
推 ericinttu:推一、三樓 10/28 09:21
推 bdvstg:推一、三樓、四樓 10/28 15:11
推 wowtiger:但是呢 1 3 4 樓遇到 EIST or Cool'n'Quiet 就慘了 10/29 01:25
→ wowtiger:原因是 Frequency 會飄 ... 超扯的 10/29 01:26