因为只拆分了渲染的内容,所以代码只针对渲染部分进行分析。
代码涉及到这些类:
CCImage,对图片的数据进行操作
CCNode,CCSprite,结点类
CCProgram,CCRenderer,CCRenderCommand,CCTriangleCommand,CCShader, CCTexture,渲染类
CCScene,场景类
CCOPGL,对OpenGL ES函数进行规划总结
CCGLView,EAGLView,ViewCtroller,GameCaller,CCApplication,CCPlatform,AppDelegate,使用系统提供的渲染缓冲区
上面已经进行了分类。
大概的实现内容:
在render函数中,导演对象会添加一个模型矩阵,在绘制完后则会删除这个模型矩阵,应该一个绘制命令对应一个模型矩阵,所以要不停的更新这个模型矩阵,用完就删。
scene中管理着一个render渲染对象,渲染对象负责去绘制渲染命令,渲染的前提是这个绘制的命令需要提前进行初始化,把矩阵位置传递进去。。。
也就是说先要去访问visit的函数,将所有的绘制进行初始化,将场景的位置矩阵传递给它的子节点,而子节点是通过递归进行访问的,子节点中也有visit的函数,因为这个visit是一个虚函数,都会继承到,在这个子节点的visit函数中,则又会调用调用子节点的draw函数,在这个draw函数中,会进行相应的初始化。
在全部把将子节点进行递归访问完并且进行初始化绘制其绘制命令以后,再通过render对象中的render函数进行绘制。