cocos2dx 2.1.4 程序运行脉络解析2—解析CCDirector

时间:2023-02-09 14:53:18

依据cocos2dx 2.1.4 程序运行脉络解析-1分析的代码,在程序run之后会调用applicationDidFinishLaunching函数进行相关初始化,依据cocos2dx helloCpp代码如下:

程序初始化CCDirector 再将CCEGLView关联到CCDirector 中去来完成初始化:


在初始化完director后程序设置了下屏幕的长宽缩放比率(现在对这方面有着很模糊的印象,为此我想用单独的一篇博客研究讨论屏幕大小调整的问题),和设置其它属性,

CCApplication 在run循环中会不停的调用director的 mainLoop方法:



程序到这里我感觉不得不将director整体的分析一遍了:一下是结果(我依据功能来划分,将其内部变量与函数的位置进行了调整,感觉这样会更清楚易读~)


这样程序的主干线就分析出来了,完毕~~

结果:

运行后窗口时纯黑色的,控制台打印信息如下:


cocos2dx 2.1.4 程序运行脉络解析2—解析CCDirector

第一部分是EGLView 调用init的函数里面生成的,

第二部分是director 设置 EGLView完后 CCConfig 解析 glGPU相关信息再将CCConfig的dictionary中的所有内容输出的结果



忘了说一个错误:上面代码我将

    pDirector->setOpenGLView(pEGLView);
// Set the design resolution
pEGLView->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, kResolutionNoBorder);

的调用顺序给弄反了,所以出错,如果按照这个调用顺序director中的resolutionSizeInPoints的值则跟designResolutionSize不一致了,然后再调用director的

setContentScaleFactor来修正,我感觉这种调用顺序好乱....等以后分析EGLViewProtocol时再整理这份混乱的思绪吧,累了,睡觉!如有错误欢迎指正,谢谢!