cocos creator2.0以上的版本对之前的渲染流程进行了优化,根据渲染renderTag,使用查表法进行渲染数据的更新.
creator中渲染组件都要继承cc.RenderComponent,这个是渲染组件的基类,如果要自定义渲染组件,需要重写cc.RenderComponent的_resetAssembler 及_activeMaterial 方法,_resetAssembler 在组件创建的时候会去调用,会在组件生命周期方法之前执行,主要负责创建并初始化渲染组件的 Assembler 实例。_activeMaterial 方法负责创建并设置渲染组件所使用的材质实例,会在组件启用及材质修改时调用。
creator渲染最后涉及到的一些关键代码,base-renderer.js,forward-renderer.js,render-flow.js,device.js,cc.render.
渲染流程:
CCDirecor中的mainLoop中
再到cc.renderer
继续执行到render-flow
在RenderFlow.visitRootNode中会遍历整个场景的结点,并且将组件中改变的数据更新,将组件中的数据更新到
_batcher(model-batcher.js)中,下一步_batcher进行提交,
再调用_batcher.terminate()提交数据到GPU缓存中,为接下来的渲染做准备,
在_forward.render中会处理当前场景的渲染状态,材质,光照,通道,着色器,及更新着色器的统一变量,
最后会调用device.draw进行绘制.