编游戏时怎样控制一秒多少帧?

oliver_liyei 2001-02-26 12:34:00
是不是用 WM_TIMER消息县10毫秒翻转一次表面
...全文
330 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyy 2001-03-03
  • 打赏
  • 举报
回复
if you use Directx,
it can control the timer.
it is very easy and useful.
see some books youself.
kidding 2001-03-03
  • 打赏
  • 举报
回复
使用GetTickCount函数,它可以返回Windows运行过的时间,精确度1毫秒
例子:

static long pt=GetTickCount();
if(GetTickCount()-pt>100)
{
//To do
pt=GetTickCount();
}
prefix 2001-03-02
  • 打赏
  • 举报
回复
用空循环等待,如abcfish所说的方法,不过我得到的帧数也不太准确,控制30帧总是变成成40帧。
oliver_liyei 2001-02-28
  • 打赏
  • 举报
回复
那游戏的速度怎样控制?
abcfish 2001-02-27
  • 打赏
  • 举报
回复
高分辨率定时器用QueryPerformanceFrequency()
在DX中可用getticktime()
自己翻转,可精确定时--书上说的,可我用q……()时,总是得不到精确的时间:(
302ycs 2001-02-27
  • 打赏
  • 举报
回复
同意:游戏每秒钟的帧数应该是越多越好,应该控制的是游戏的速度,与帧数无关。
windows下应该用多媒体计数器(有独立的线程)来控制速度:
TimerID=timeSetEvent(game_speed,0,TimerProc, 0, TIME_PERIODIC);
回调函数执行计数:

void CALLBACK TimerProc (UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
target_cycle++;
}
游戏主循环判断:
while(target_cycle>act_cycle)
{
act_cycle++;

更新一次游戏数据......
}




cproom 2001-02-26
  • 打赏
  • 举报
回复
游戏每秒钟的帧数应该是越多越好,应该控制的是游戏的速度,与帧数无关。
boyhill 2001-02-26
  • 打赏
  • 举报
回复
1,接管程序主循环。
2,做自己TIMER
3,在TIMER内,主循环里翻转主表面

8,324

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧