作者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
推 elfria:不是吧@@...還是你用getTime來取系統時間差, 與timeGettime 10/28 05:09
→ elfria:做比較..至少GetTime是準確的 10/28 05:09
推 dbstudio:找一下這個 timeBeginPeriod / timeEndPeriod 10/28 19:50
→ jellyice:誤差是因為code的問題吧?你時間怎麼算的?用timemin? 10/28 21:22
→ jellyice:你>=10時timemin+=1,但>=10可能是12、14、19甚至25、26 10/28 21:22
→ jellyice:你都嘛+=1,那當然算起來就少了時間,而且從gettime=0; 10/28 21:23
→ jellyice:到starttime=timeGetTime();經過了多久?這段時間都沒算 10/28 21:23
→ jellyice:零零碎碎的時間加起來,誤差就產生了,也因此你>=100時誤 10/28 21:26
→ jellyice:差會比較小,因為捨棄零碎時間的次數少,誤差就小了 10/28 21:27