游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8762|回复: 19

一般怎么限制FPS

[复制链接]

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
发表于 2009-5-19 14:53:00 | 显示全部楼层 |阅读模式
渲染速度太快想限制在60帧左右,
我开始用了sleep....= =

22

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
QQ
发表于 2009-5-19 17:28:00 | 显示全部楼层

Re:一般怎么限制FPS

一种简单的方法就是在游戏循环体最后加一句while,判断当前时间与上一帧时间的差,时间没到就一直执行空循环.

while((GetTickCount()-tnow)<16)
;
tnow=GetTickCount();

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2009-5-19 17:50:00 | 显示全部楼层

Re:一般怎么限制FPS

楼上的方法会导致cpu占用率 100%

这样cpu很容易坏

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2009-5-19 17:52:00 | 显示全部楼层

Re:一般怎么限制FPS

其实用Sleep(1)就可以了, 我就是这样用的, 空屏帧率在60帧左右

当然现在的动画都是基于时间来插值的, 所以帧率如何不影响游戏动画.

22

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
QQ
发表于 2009-5-19 18:47:00 | 显示全部楼层

Re:一般怎么限制FPS

用sleep就是不太准,CPU忙的时候会延迟.好象有种锁帧技术把渲染帧率锁定为逻辑帧率的一定比例,这样可以做到既不吃光CPU又准确控制时间. 具体我也不懂.

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2009-5-19 18:58:00 | 显示全部楼层

Re:一般怎么限制FPS

是不是"垂直同步"?

我用过, 感觉不太好. 虽然不会导致cpu 100%, 但是如果在运行游戏的时候打开别的窗体, 别的窗体会有明显的闪烁

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2009-5-20 00:10:00 | 显示全部楼层

Re:一般怎么限制FPS

flyue用的sleep不会出现"卡“的现象么?
我开始也用的是sleep,很明显看到物体运动时候像卡带(不是丢帧)

"垂直同步"大概是怎样的??好像有听说过这个名词

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2009-5-20 00:37:00 | 显示全部楼层

Re:一般怎么限制FPS

sleep几毫秒,根本感觉不到卡,但是对CPU降压有莫大的好处。
你可以测试下你所用的sleep所支持的最小粒度,反正不是1就是0,有些sleep接受0值为最小粒度,有些遇到0值就不sleep了。记不得WIN32的SLEEP是怎么处理的了。

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2009-5-20 00:38:00 | 显示全部楼层

Re:一般怎么限制FPS

垂直同步一时找不到合适的语言解释。
不管用不用垂直同步,限制帧率的代码还是要写的,这样完善些。

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2009-5-20 12:33:00 | 显示全部楼层

Re:一般怎么限制FPS

我的动画就是根据时间来插值的.

不管这个程序在超慢的电脑上运行, 还是在超快的电脑上运行, 动画都是同步的.

但是在慢的电脑上, 动画会不连贯地"卡"过去, 在快的电脑上, 动画会非常流畅. 总之, 一个动画播放完的时间是相等的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-20 06:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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