一個簡單的遊戲循環運行有點像這樣:處理遊戲循環與OS定時器
MSG msg;
while (running){
if (PeekMessage(&msg, hWnd, 0, 0, PM_REMOVE)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
try{
onIdle();
}
catch(std::exception& e){
onError(e.what());
close();
}
}
我使用Windows爲例這裏的例子的緣故(從this question拍攝)它可以是任何平臺。糾正我,如果我錯了,但這樣一個循環將使用100%的CPU /內核(使用我的電腦上的核心的50%),因爲它總是檢查running
變量的狀態。
我的問題是,使用操作系統'(在Windows的示例中)定時器函數來實現遊戲循環會更好(性能方面),根據需要的遊戲邏輯的滴答數設置所需的時間間隔每秒?我問這是因爲我假設定時器功能使用CPU的RTC中斷。
具有很多意義!此外,很高興知道'QueryPerformanceCounter()',我相信我一直在使用它(win7在這裏)沒有問題,但很好知道它不可靠。 – stelonix 2011-04-07 12:51:41