最近项目中有需求,就顺便复习一下creator的渲染部分,在这里记录一下实现过程和自己的思考,主要是看GT大佬的【分享】自定义渲染合批之自定义顶点格式(附 Demo 和引擎源码解读)。
最核心的就是updateRenderData()这个方法,每一帧都会调用,当cc.RenderComponent组件的_vertsDirty属性为true就会调用updateUVs()和updateVerts()来更新顶点的uv和pos,assembler有个好处就是自定义顶点格式,可以自定义想要的数据格式,然后在shader里就可以直接使用,而不需要从材质传入,让材质可以合批。当然meshRenderer一样可以做到,但是性能上来说还是assembler比较好一点,而meshRenderer的易用性比较高。
这个效果就是利用自定义顶点,我定义了5个顶点顺序是中间,左上,右上,右下,左下,然后计算出对应的uv和pos,在鼠标点击移动的时候改变中间那个顶点的pos并更新顶点数据,来实现这个效果的。