游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2700|回复: 8

请问,有更好的办法控制游戏速度吗

[复制链接]

13

主题

594

帖子

595

积分

高级会员

Rank: 4

积分
595
发表于 2005-9-16 01:56:00 | 显示全部楼层 |阅读模式
我现在的方法是:在Do Loop循环中用QueryPerformanceCounter获取时间来控制游戏速度的,这样的确很精确,但是Do Loop循环占用了剩余的CPU时间.我做的小游戏只用到了10%左右的CPPU时间,而剩下的80%多完全去做无意义的循环去了,请问有办法减低CPU消耗吗

我也试了下用Timer或Sleep,CPU消耗是降下来了,但是速度控制也变得不准确了,头痛...... [em7]

17

主题

165

帖子

167

积分

注册会员

Rank: 2

积分
167
发表于 2005-9-16 08:30:00 | 显示全部楼层

Re:请问,有更好的办法控制游戏速度吗

我认为,其实在Do Loop,只要加一句Sleep,就可以使CPU降下来,你不用使用Sleep来控制速度,只是加一句(如Sleep(1)),CPU就会降下不少。
我写时候也是用QueryPerformanceCounter来控制速度,但在循环中加了Sleep的。

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-9-16 12:35:00 | 显示全部楼层

Re:请问,有更好的办法控制游戏速度吗

加Sleep在cpu频率低的机子上当fps>=45时会造成fps不稳定

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-9-16 12:43:00 | 显示全部楼层

Re:请问,有更好的办法控制游戏速度吗

如果你一定要用sleep的话,
可以用下面的方法减轻点sleep对fps的影响:

Sleep((int)(frameTime - startTime + endTime);

1

主题

8

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2005-9-16 18:02:00 | 显示全部楼层

Re:请问,有更好的办法控制游戏速度吗

关注ing

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-9-17 01:17:00 | 显示全部楼层

Re:请问,有更好的办法控制游戏速度吗

当然是通过虚拟时间和真实时间间的抽象层的来控制游戏速度。

7

主题

136

帖子

136

积分

注册会员

Rank: 2

积分
136
发表于 2005-9-17 09:49:00 | 显示全部楼层

Re:请问,有更好的办法控制游戏速度吗

我们用SetTimer(0,10,FUNC);
然后在SetTime的回调函数里得到两次调用的间隔时间,然后送到 Update(float deltatime)里去
所有需要和时间相关的东西,比如速度,都以秒为单位,然后实际的速度=单位速度*deltatime;

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-9-17 10:01:00 | 显示全部楼层

Re:请问,有更好的办法控制游戏速度吗

SetTimer不好。。。真的。。。

11

主题

254

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
发表于 2005-9-18 20:48:00 | 显示全部楼层

Re:请问,有更好的办法控制游戏速度吗

我在国外的书中看到这样做:
在进入游戏循环是读取时间,渲染缓冲区之后,再读时间看看是不是超过30ms(设定30fps),若是,则flip backbuffer,否则,等。

不知道是不是你们说的这种技术---俺做过策划,没做过游戏程序。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-27 22:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表