公告

联系我:我的126邮箱: billhsu。 Locations of visitors to this page
<2022年12月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

统计

  • 随笔 - 41
  • 文章 - 0
  • 评论 - 82
  • 引用 - 0

常用链接

留言簿(16)

随笔分类

随笔档案

相册

Game Dev

搜索

  •  

最新评论

阅读排行榜

评论排行榜

游戏中CPU使用率的控制
通常情况下,如果不处理下,再小的游戏也会让CPU使用率100%.
应该用Sleep(1)把多余的片段还给CPU,
像这样:
while(true)
{
DWORD start_time 
= GetTickCount();
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message == WM_QUIT) break;
TranslateMessage(
&msg);
DispatchMessage(
&msg);
}

update(float(GetTickCount() - start_time));
while((GetTickCount() - start_time) < 30) Sleep(1);
}

update(float timeDelta)是游戏逻辑与画面更新的函数。
效果图:

posted on 2009-06-12 12:00 Bill Hsu 阅读(2393) 评论(18)  编辑 收藏 引用 所属分类: C/C++Game Dev

评论

# re: 游戏中CPU使用率的控制[未登录] 2009-06-12 14:01 dophi

我记得sleep的精度好像是10ms,即使写1最大帧速也只能是100fps..如果你想要帧速高于100fps,这种方式是不行的
  回复  更多评论    

# re: 游戏中CPU使用率的控制 2009-06-12 15:18 cr4ck

要那么高的帧速干啥,就算是格斗游戏,50fps也足够了吧
  回复  更多评论    

# re: 游戏中CPU使用率的控制 2009-06-12 15:37 Bill Hsu

@dophi
那咋办呢
  回复  更多评论    

# re: 游戏中CPU使用率的控制 2009-06-12 16:10 Heath

为什么不首选Sleep(0)?
  回复  更多评论    

# re: 游戏中CPU使用率的控制 2009-06-12 16:39 路人丁

为什么不首选Sleep(0)?
--- up
  回复  更多评论    

# re: 游戏中CPU使用率的控制 2009-06-12 16:47 Bill Hsu

@Heath
Sleep(0)在好多CPU上不起任何作用
  回复  更多评论    

# re: 游戏中CPU使用率的控制 2009-06-12 18:10 u2u

用Sleep(0)是可以的,这跟CPU无关吧,他只是告诉系统将线程上下文进行切换。
  回复  更多评论    

# re: 游戏中CPU使用率的控制 2009-06-12 18:20 Bill Hsu

@u2u
在我的电脑上就不起作用
  回复  更多评论    

# re: 游戏中CPU使用率的控制 2009-06-12 18:32 路人丁

Sleep(0)在好多CPU上不起任何作用
------ 不是不起作用,是起作用了,但因为没有其他进程/线程做等待操作,所以它又开始运行了。
而Sleep(1)大多数情况下要等几十毫秒(虽然参数是1毫秒),对于你这种情况,就相当于即使CPU空闲,但本线程就是不干事。
所以Sleep(1)和Sleep(0)含义是不一样的
Sleep(0):在下一个时间片之前,做了也白做,所以不应该浪费CPU
Sleep(1):即使我有事干,且CPU空闲着,我也不去做。

  回复  更多评论    

# re: 游戏中CPU使用率的控制 2009-06-13 15:37 小虎无忧

楼上正解
  回复  更多评论    

# re: 游戏中CPU使用率的控制 2009-06-13 15:40 小虎无忧

要高精度的定时可以使用“等待定时器”——Waitable Timer。
  回复  更多评论    

# re: 游戏中CPU使用率的控制 2009-06-16 08:33 董波

这个方法不佳。。。
谁有没有更好的方法提出来哈,呵呵。
  回复  更多评论    

# re: 游戏中CPU使用率的控制 2009-06-16 09:09 11

博主包括楼上的所有人都是初学者?
问题在PeekMessage这个函数上,这个函数应该是阻塞的,有消息才换醒,没有就休眠。
讨论sleep纯粹没事找事。
  回复  更多评论    

# re: 游戏中CPU使用率的控制[未登录] 2009-06-16 11:45 12

楼上的更搞, 阻塞了 游戏还怎么画?
  回复  更多评论    

# re: 游戏中CPU使用率的控制 2009-06-16 11:57 13

楼上听过多线程吗?
知道UI怎么跑在什么线程吗,知道UI也是根据发消息、处理消息才能画出来吗
  回复  更多评论    

# re: 游戏中CPU使用率的控制 2009-06-17 17:09 黑色天使

@11
只有这个人是新人,鉴定完毕
  回复  更多评论    

# re: 游戏中CPU使用率的控制 2009-06-22 15:16 Khan's Notebook

socket select不是可以获得更高精度的延时么
  回复  更多评论    

# re: 游戏中CPU使用率的控制[未登录] 2010-04-03 10:29 Bill Hsu

  回复  更多评论    

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理