zoukankan      html  css  js  c++  java
  • Cocos2dx-3.2 引擎学习(一)之CCApplication

    CCApplication继承自ApplicationProtocol (class CC_DLL Application : public ApplicationProtocol)

    ApplicationProtocol类中定义了相关的平台枚举量,应用启动完成回调,应用进入后台回调,从后台进入应用回调,程序执行的Interval周期,程序运行平台,程序的配置语言。程序只有ApplicationProtocol的.h文件,这个类是虚拟基类。

    CCApplication采用的是单例模式,其中的单例就是Application * Application::sm_pSharedApplication = 0; 这个变量。

    重要的Application::run函数,run函数中初始化了director,glview两个变量句柄,

    两个函数:

    QueryPerformanceFrequency()函数,获得CPU的主频。

    QueryPerformanceCounter()函数,获得计时的次数

    可以知道:

    总次数 / 时间 = 频率  可以推导出:时间 = 总次数 / 频率 。因此可以推算渲染的帧数。

    setAnimationInterval(1.0 / 60); 这句很熟悉,设置帧率。代码如下:

    void Application::setAnimationInterval(double interval)
    {
      LARGE_INTEGER nFreq;
      QueryPerformanceFrequency(&nFreq);
      _animationInterval.QuadPart = (LONGLONG)(interval * nFreq.QuadPart);  // 时间*CPU频率 = 总次数 (这个总次数是1/60秒CPU的计数次数)
    }

    有了总次数_animationInterval.QuadPart后,继续看run里面的代码:

    有一个while主循环,循环中执行的是:

     //前后两次计数次数相减,只有当达到上面计算的总次数后,渲染一次。1/60秒渲染一次

    if (nNow.QuadPart - nLast.QuadPart > _animationInterval.QuadPart)  
    {
      nLast.QuadPart = nNow.QuadPart;

      director->mainLoop();
      glview->pollEvents();
    }else

    {
      Sleep(0);
    }

    其中有2个重要的函数:

    director->mainloop();  glview->pollEvents();  导演类的mainloop处理函数,和glview的事件处理函数。

    这个主循环后面是程序走向结束时,执行的函数,判断glview->isOpenGLReady(),如果OpenGL是存在的,就执行director->end()函数。

    并且释放glview。

    至此,程序的主流程在Application类中就完成了开始-运行-结束的过程。

    (这是Win32平台的CCApplication文件,其他平台的CCApplication文件并不是一致的,根据相关平台有其差异)

    继承关系:

    ApplicationProtocol

      |————Application

  • 相关阅读:
    转:asp.net mvc下的多语言方案 包含Html,Javascript和图片
    转:在ASP.NET MVC中通过URL路由实现对多语言的支持
    转:C# lock用法
    转:SQL 关于apply的两种形式cross apply 和 outer apply
    在ASP.NET MVC 中获取当前URL、controller、action
    转:Newtonsoft.Json高级用法
    转:jQuery插件开发全解析
    转:ASP.NET MVC 多语言实现技巧 最简、最易维护和最快速开发
    转:前端js、jQuery实现日期格式化、字符串格式化
    转:.Net内存泄露原因及解决办法
  • 原文地址:https://www.cnblogs.com/vokie/p/4000686.html
Copyright © 2011-2022 走看看