有一个需求
即:需要同时得到很多很多的头像,还要吧这些头像都显示成圆形。
问题:用遮罩吧图片都变成圆形太费DC
问:有没有方法在加载图片的时候就都处理成圆形再存到内存map中等待使用?
有一个需求
即:需要同时得到很多很多的头像,还要吧这些头像都显示成圆形。
问题:用遮罩吧图片都变成圆形太费DC
问:有没有方法在加载图片的时候就都处理成圆形再存到内存map中等待使用?
有两种方法
简单方法:如果头像图片是放在阿里云oss上的, 可以利用url参数进行处理, 再配动态合图,dc很小
https://help.aliyun.com/document_detail/144582.html?spm=a2c4g.212049.0.0.d0e54ebbEDzDfz
复杂方法:把头像动态合图再配自定义顶点参数+shader实现
3.x 版自定参数我是利用createMesh方法去生成ui,因为createMesh就有自定义顶点参数的方法
我的建议是把需求删除省事
用shader
头像使用需求量太大了,使用shader跟遮罩没有太大区别,因为使用不了合图
还是有区别
至少在cocos 层面 mask是2个节点 shader只有一个节点,再说shader并不是没有办法合图的
主要是太多了,多的时候需要头像两三千,三四千
用了shader合不了图吧
??又不用全显示
shader 可以自己写规则读取合图文件的
可以合,要在片段着色器里面去取合图特地位置的texture,
只是这么处理drawcall问题依然存在
就是要全部显示,不然没必要这么麻烦了不
通过传入顶点来分割图片 是可以合批的
老哥哥,怎么说?
他说的是这个文章
我当初觉得改动有点深了
不知道实际应用是否适应的了复杂的业务场景,
你可以试试
(shader 圆形头像 合图) + 合批 可以完美解决
shader,跟合批冲突了
这个改动其实是可以弄一个新sprite 来继承老spirte, 然后把引擎里的simple.ts,splice.ts 等assembler 拷一份出来, 放到自己项目, 然后新sprite 复写一下assembler的初始化改为取你魔改的imple.ts,splice.ts就能弄一个新的sprite跟老的sprite一起用又不用改动引擎, 唯一缺点是新sprite和老sprite不能共同一个material
您好, 我也是想在3.x中使用自定义顶点合批。你是使用的 utils.createMesh 方法吗。