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

看板C_and_CPP作者 (會彈吉他屌屁)時間15年前 (2010/10/28 04:39), 編輯推噓4(403)
留言7則, 5人參與, 最新討論串1/1
遇到的問題: 使用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

10/28 08:10, , 1F
試試 QueryPerformanceCounter/Frequency
10/28 08:10, 1F

10/28 08:53, , 2F
用GetTickCount()會不會比較好
10/28 08:53, 2F

10/28 08:57, , 3F
推QueryPerformanceCounter/Frequency
10/28 08:57, 3F

10/28 09:21, , 4F
推一、三樓
10/28 09:21, 4F

10/28 15:11, , 5F
推一、三樓、四樓
10/28 15:11, 5F

10/29 01:25, , 6F
但是呢 1 3 4 樓遇到 EIST or Cool'n'Quiet 就慘了
10/29 01:25, 6F

10/29 01:26, , 7F
原因是 Frequency 會飄 ... 超扯的
10/29 01:26, 7F
文章代碼(AID): #1Co8tlml (C_and_CPP)