看板 GameDesign 關於我們 聯絡資訊
※ [本文轉錄自 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