游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2918|回复: 6

如何计算ddraw游戏的fps呢?

[复制链接]

10

主题

149

帖子

149

积分

注册会员

Rank: 2

积分
149
QQ
发表于 2006-4-2 23:42:00 | 显示全部楼层 |阅读模式
如何计算ddraw游戏的fps呢?
如何控制它呢?
能不能讲个基本的思路?或算法?
谢谢

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2006-4-3 10:25:00 | 显示全部楼层

Re:如何计算ddraw游戏的fps呢?

记录每桢的时间,如果你要控制在60桢,那么每桢的执行时间就是1/60秒,如果桢结束后仍不足1/60秒,剩下的时间sleep就行了。
当然每桢计算sleep的话会有较大误差,监视长一点儿的时间就行了。

10

主题

149

帖子

149

积分

注册会员

Rank: 2

积分
149
QQ
 楼主| 发表于 2006-4-3 13:28:00 | 显示全部楼层

Re:如何计算ddraw游戏的fps呢?

如果每一桢都要计算,那不是很耗资源?
我分析了别人的代码,得出一个基本的算法:
伪代码:
int dwFarmes; //桢频
int dwFarmesCount; //一秒的桢数
int dwFarmesTime; //上一次的时间
int dwTime;//两次间隔的时间
dwFarmesCount++;
dwTime=GetTime()-dwFarmesTime;
if(dwTime>1000)
{
  dwFarmes=dwFarmesCount*1000/dwTime;
  dwFarmesTime=GetTime();
  dwFarmesCount=0;
}
这种方法虽然不精确,但是计算量比较少(这是我这小菜鸟的看法,大家不要见笑)。
经过分析我发现要精确的控制fps是不大可能的,只能把它控制在一定的范围。
不知大家怎么想呢?

1

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2006-4-4 11:47:00 | 显示全部楼层

Re:如何计算ddraw游戏的fps呢?

锁定你的游戏在一个比较固定的帧率很容易的。你只需要在游戏循环开始时记下当时的时间t1,然后在游戏循环将要结束时再记一个时间t2,看看t1-t2是否等于1/30秒(大约30毫秒),如果小于1/30毫秒,那么只需将剩下的时间耗尽就可以了。当然,如果你觉得将剩下的时间耗尽有点浪费的话,利用剩下的时间做些你认为有意义的事也是可以的。下面的代码将你的游戏锁定在30帧/秒:

void GameMain( )
{
    DWORD  start_time;

    //取得从本次windows启动,到现在所经过的毫秒数
    start_time = GetTickCount( );

    //游戏逻辑
       ......
    //渲染游戏画面
       ......

    //锁定帧率
    while( ( GetTickCount( ) - start_time ) < 30 );
}

10

主题

149

帖子

149

积分

注册会员

Rank: 2

积分
149
QQ
 楼主| 发表于 2006-4-5 10:08:00 | 显示全部楼层

Re:如何计算ddraw游戏的fps呢?

……那么,一般游戏要不要锁定呢?如果不锁定的话,画面会不会出现较大的变动呢?

1

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2006-4-6 22:27:00 | 显示全部楼层

Re:如何计算ddraw游戏的fps呢?

锁定帧率的目的其实就是让你的游戏画面看起来不至于太快,一般情况下30帧/秒的速率就可以让人觉得你的游戏画面看起来很舒服。如果你的游戏循环在不锁定帧率的情况下就能以30帧/秒的速率运行(每次循环花费约30毫秒),那么你就不需要锁定帧率。不过,通常情况下,你是需要锁定帧率的。

38

主题

275

帖子

281

积分

中级会员

Rank: 3Rank: 3

积分
281
QQ
发表于 2006-4-7 12:34:00 | 显示全部楼层

Re:如何计算ddraw游戏的fps呢?

http://blog.csdn.net/kevinlynx/archive/2006/04/05/651985.aspx

也是关于游戏帧率的文章,希望得到高手的指正!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 04:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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