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進行繪製.