公告

联系我:我的126邮箱: billhsu。 Locations of visitors to this page
<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

统计

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

常用链接

留言簿(16)

随笔分类

随笔档案

相册

Game Dev

搜索

  •  

最新评论

阅读排行榜

评论排行榜

Android游戏计时
Read this post in english:http://androgeek.info/?p=299

以前代码经验很多都是基于windows的,所以对android下面的计时函数不是太了解。

在写Friut3D时,我用的代码是用gettimeofday()来计时的。但是效果不好,游戏里有个场景跑起来十分卡,acepig兄和我都觉得这个问题很诡异。开始觉得这是模型的问题,现在看来是计时函数不精确惹得祸。

看看当时写的获取系统时间的代码:

static long getTime(void)

{
gettimeofday(
&now, NULL);
return (long)(now.tv_sec*1000 + now.tv_usec/1000);
}


今天在一个google讨论组里得知gettimeofday()记得的tick是不准确的。而这个游戏逻辑依赖于time delta来计算各个物体运动,计时不精确,渲染自然会卡顿。

于是用纳秒级的准确度的clock_gettime()重写了getTime()函数:

static long _getTime(void)

{
struct timespec now;
clock_gettime(CLOCK_MONOTONIC, 
&now);
return now.tv_sec*1000000 + now.tv_nsec/1000;

}


改了计时函数后,游戏各个场景都流畅了。

posted on 2011-01-30 23:16 Bill Hsu 阅读(2085) 评论(0)  编辑 收藏 引用 所属分类: C/C++Game Dev


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理