[轉錄][問題] TimeGetTime(); 和真實時間有誤差

看板GameDesign (遊戲設計)作者 (Cilia)時間15年前 (2010/10/28 04:40), 編輯推噓2(207)
留言9則, 3人參與, 最新討論串1/1
※ [本文轉錄自 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

10/28 05:09, , 1F
不是吧@@...還是你用getTime來取系統時間差, 與timeGettime
10/28 05:09, 1F

10/28 05:09, , 2F
做比較..至少GetTime是準確的
10/28 05:09, 2F

10/28 19:50, , 3F
找一下這個 timeBeginPeriod / timeEndPeriod
10/28 19:50, 3F

10/28 21:22, , 4F
誤差是因為code的問題吧?你時間怎麼算的?用timemin?
10/28 21:22, 4F

10/28 21:22, , 5F
你>=10時timemin+=1,但>=10可能是12、14、19甚至25、26
10/28 21:22, 5F

10/28 21:23, , 6F
你都嘛+=1,那當然算起來就少了時間,而且從gettime=0;
10/28 21:23, 6F

10/28 21:23, , 7F
到starttime=timeGetTime();經過了多久?這段時間都沒算
10/28 21:23, 7F

10/28 21:26, , 8F
零零碎碎的時間加起來,誤差就產生了,也因此你>=100時誤
10/28 21:26, 8F

10/28 21:27, , 9F
差會比較小,因為捨棄零碎時間的次數少,誤差就小了
10/28 21:27, 9F
文章代碼(AID): #1Co8vCw6 (GameDesign)
文章代碼(AID): #1Co8vCw6 (GameDesign)