我把妳的程序抄下來看下確實只有21的fps
但是把
timeStart=getTickCount();//重設開始時間
改為
timeStart+=33;//33就是1000/fps
就是準確的fps=30了
總之改完之後
int Game_Main(){
static int timeStart=getTickCount();//在第壹次調用函數的時候賦值
while(getTickCount()-timeStart < 33)
timeStart+=33;
return 1;
}
說完實際的,那麽來談談那裏吃掉了10多ms吧
顯然是循環最後壹次的while(GetTickCount()-timeStart < 1000/fps);和之後的GetTickCount()嘛
顯然這之後再調用GetTickCount()得到的值比timeStart+33還大10多ms
還有不要用除法吧,沒必要,畢竟fps不是30就是60,用自己設定的常數當然更快
最後說下吧,支持之前某位仁兄提到的不要過多占用CPU,至於方法如果不想自己包裝Sleep的話多考慮下吧,老實說對33ms進行壹次的循環我也沒底...