动态生成图片的需求

不是,3.x版以sprite为例,需先继续Spritem,然后复写函数requestRenderData,这个父函数可以查看引擎源码的ui-renderer.ts ,其中RenderData.add([添加你想要的参数]) 比如:
RenderData.add([
new gfx.Attribute(gfx.AttributeName.ATTR_POSITION, gfx.Format.RGB32F),
new gfx.Attribute(gfx.AttributeName.ATTR_TEX_COORD, gfx.Format.RG32F),
new gfx.Attribute(gfx.AttributeName.ATTR_COLOR, gfx.Format.RGBA32F)
])
最后就是我上面回复的处理,把需要值塞到buffer里

2赞

ok 谢谢大佬,插个眼,等项目做完了回来看看怎么弄

参考这个:https://forum.cocos.org/t/topic/152774/10

你一个屏幕同时显示几千个头像吗?都用同一个shader的话头像是可以合批的

多的可能上千,都是用的同一个,目前没找打何时的方法去进行合批

卧槽,大开眼界!

3.x 的这个自定参数相关的能单独开贴分享下吗?很想学习下!

如果你动态生成的图集的样式是固定的。例如一个图集里有10x10个头像。那么只要将shader改一下,加一个网格化处理就行了。
一个普通的单图的圆形裁切,一般是按0.5,0.5为中心,用uv+sdf来做计算判定。
现在改成,将uv 乘以10,取小数部分,这时取出的值就是当前头像的局部uv。用这个数据去做sdf计算即可

https://forum.cocos.org/t/topic/154029 用自定义顶点实现圆角矩形或圆形裁切。脚本写好了,直接用就行。