【发布时间】:2011-04-05 23:54:02
【问题描述】:
一个简单的游戏循环运行有点像这样:
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();
}
}
(取自this question)
为了举例,我在这里以 windows 为例,它可以是任何平台。如果我弄错了,请纠正我,但这样的循环将使用 100% 的 cpu/核心(使用我计算机上一个核心的 50%),因为它总是检查 running 变量的状态。
我的问题是,使用操作系统的(在示例 Windows 中)计时器函数来实现游戏循环会更好(在性能方面)吗,根据所需的游戏逻辑滴答数设置所需的间隔第二?我问这个是因为我假设定时器函数使用 CPU 的 RTC 中断。
【问题讨论】:
标签: windows timer while-loop game-loop