run()->while(){mainLoop()}->drawScene()->if(_runningScene)…_runningScene->render(_renderer);->visit()->draw和visit其他内容。
Render就是渲染函数,其中有Camera这个概念,因为cocos是有3d的,camera负责纹理的显示,如visibleByCamera 表示只有肉眼看到的才绘制,看不到的就不绘制了(提高效率)。在render函数中,还有一个Matrix概念,就是将绘制目标的相关信息存储起来的一种数据结构,所以render中要加载各种matrix,因为渲染是按节点层一层一层的向下渲染的,会用到Visit函数,该函数中也有Matrix。注意Draw函数在Node是个虚的,Sprite中有其重载:
_quadCommand.init(_globalZOrder,_texture->getName(), getGLProgramState(), _blendFunc, &_quad, 1, transform, flags);
renderer->addCommand(&_quadCommand); 这段代码表示将相关信息编写一个绘制命令,然后将绘制命令加载执行(显然是多线程的)。