标签:io os ar for 文件 sp c on cti
Director,导演类。
首先是在CCDirector.cpp文件中看到:
static DisplayLinkDirector *s_SharedDirector = nullptr;
确定了Director的单例模式设计原则。
DisplayLinkDirector,这个继承自Director。用来同步Timer,刷新屏幕
单例模式的设计精髓:
Director* Director::getInstance()
{
      if (!s_SharedDirector)    //当director实例不存的时候,创建之
      {
            s_SharedDirector = new (std::nothrow) DisplayLinkDirector();
            CCASSERT(s_SharedDirector, "FATAL: Not enough memory");
            s_SharedDirector->init();
      }
      return s_SharedDirector;
}
init()方法:
设置程序运行默认值,包括FPS,是否显示FPS,GL Projection,Pixel Format等。
场景指针的初始化nullptr。
四个重要的事件回调:
const char *Director::EVENT_PROJECTION_CHANGED = "director_projection_changed";
const char *Director::EVENT_AFTER_DRAW = "director_after_draw";
const char *Director::EVENT_AFTER_VISIT = "director_after_visit";
const char *Director::EVENT_AFTER_UPDATE = "director_after_update";
initTextureCache();    
    initMatrixStack();  //初始化场景栈,投影栈,纹理栈
// draw the scene
    if (_runningScene)
    {
          _runningScene->visit(_renderer, Mat4::IDENTITY, false);
          _eventDispatcher->dispatchEvent(_eventAfterVisit);
    }
绘制场景,场景绘制完以后,分发事件_eventAfterVisit
if (_displayStats)
    {
          showStats();
    }  游戏运行参数显示开关
_renderer->render();
    _eventDispatcher->dispatchEvent(_eventAfterDraw);
render绘制以后,发出事件_eventAfterDraw。
// swap buffers
    if (_openGLView)
    {
          _openGLView->swapBuffers();
    }
交换绘制openGL缓存
场景的管理。
标签:io os ar for 文件 sp c on cti
原文地址:http://www.cnblogs.com/vokie/p/4004814.html