游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3319|回复: 8

请问GameLoop是要放在哪里?

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2005-8-25 20:11:00 | 显示全部楼层 |阅读模式
我是个菜鸟,也知道这个问题很白痴,刚刚开始学习Visual C++,我想请问我们的GameLoop需要放在那个部分。我是使用WM_TIMER把GameLoop放在那里进行,请问你们都是放在那个部分。

我看到一篇文章,他是放在WinMain里的,但现在已经使用MFC了,所以不懂MFC是放在哪里?我也不懂如何篇WinMain的程序。

谢谢你们回答我的问题。 [em17]

37

主题

82

帖子

82

积分

注册会员

Rank: 2

积分
82
发表于 2005-8-25 23:13:00 | 显示全部楼层

Re: 请问GameLoop是要放在哪里?

使用MFC框架就放在OnTimer中。

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2005-8-26 10:07:00 | 显示全部楼层

Re:请问GameLoop是要放在哪里?

MFC放在OnIdle中,参考我的文章

18

主题

279

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
QQ
发表于 2005-8-26 10:22:00 | 显示全部楼层

Re:请问GameLoop是要放在哪里?

重载CWinApp::Run()函数,比使用WM_TIMER消息更准确,也更直接。

给一个简单的例子:
int CYourApp::Run()
{
  MSG msg;
  for(;;)
  {
    if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
    {
      if(WM_QUIT == msg.message)
      {
        break;
      }
      else
      {
        PreTranslateMessage(&msg);
        TranslateMessage(&msg);
        DispatchMessage(&msg);
      }
    }
    //在这里处理游戏的状态。比如:是该对话还是该PK,下一步能否走的通等
    //。。。。。。
    if(绘制场景的时间到了)
    {
      //调用绘制场景的函数
    }
    else
    {
      OnIdle();  //可以不调用
      continue;
    }
  }
  return 0;
}

18

主题

279

帖子

279

积分

中级会员

Rank: 3Rank: 3

积分
279
QQ
发表于 2005-8-26 10:32:00 | 显示全部楼层

Re:请问GameLoop是要放在哪里?

建议不要将GameLoop放在OnIdle()中,该过程只在程序已较长时间(通过一种空闲算法来判断,这个[B]长时间[/B]人是感觉不到的)没有消息到来时才会调用。如果你的程序很复杂,消息很繁忙,它很可能不会被调用。

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2005-8-26 10:58:00 | 显示全部楼层

Re:请问GameLoop是要放在哪里?

这问题烦了我一阵子,现在终于弄懂了,谢谢。

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2005-8-26 12:42:00 | 显示全部楼层

Re: 请问GameLoop是要放在哪里?

建议不要将GameLoop放在OnIdle()中,该过程只在程序已较长时间(通过一种空闲算法来判断,这个长时间人是感觉不到的)没有消息到来时才会调用。如果你的程序很复杂,消息很繁忙,它很可能不会被调用。


没听说过,按F11跟进去看吧,跟WinMain架构一样的

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2005-8-26 12:46:00 | 显示全部楼层

Re:请问GameLoop是要放在哪里?

如果还有人把游戏主循环放在Timer里,我只能说可能你考虑的问题我们还没想到,目前还找不出理由为什么要放在Timer中

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2005-8-26 18:34:00 | 显示全部楼层

Re:请问GameLoop是要放在哪里?

4楼正解。
但是最好不用MFC
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-27 15:26

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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