·天新网首页·加入收藏·设为首页
首页|笔记本|手机|数码相机|摄像机|MP3/MP4|主板|内存|显示器|办公|打印机|下载|开发|汽车|学院|业界
硬件|台式机|数码|数字家庭|投影仪|GPS/CPU|显卡|硬盘|服务器|网络|一体机|驱动|源码|游戏|考试|报价
您现在的位置:天新网 > 软件开发 > 游戏开发
游戏中限制帧速的新方法
http://dev.21tx.com 2001年09月16日 Blog Kevin_qing

以前很多资料介绍的方法都是使用GetTickCount/或者是多媒体定时器,来轮训时间,精度确实不错。
但是这样会造成CPU时间的极大浪费,一个主要表现就是在nt/2000环境中后台程序反应极慢。
如果可以使用像win32 waitobject之类的方法来实现,那么在等待时间消息时,线程挂起,cup资源浪费较少。这样就不会出现后台程序挂起的问题了。

幸运的是,win32在98以后的版本都提供了waitable timer来等待time event。
具体使用方法请参考msdn。

这里要说的是,waitable timer默认的精度是1/50秒,达不到60fps的要求。
查阅msdn也没有发现有可以设置时间精度的函数。

后来在一个偶然的机会我发现timerBeginPeriod()函数设置多媒体时间精度会影响到Waitable timer。
猜想Waitable timer内部是使用了多媒体时钟来实现的。
通过设置timerBeginPeriod(8)就可以得到每秒60的时间消息了。
更大的值会使得cpu占用大大提高,所以建议只要设置到需要的精度即可。

上一篇: 微软与3D图像 ——OpenGL与Direct3D之战(节选)
下一篇: by Step(5)

Google
 
热点文章
关于我们 | 联系我们 | 广告服务 | 工作机会 | 版权声明 | 欢迎投稿 | 网站地图
Copyright © 2000-2008 , www.21tx.com , All Rights Reserved .
晨新科技 版权所有 Created by TXSite.net