(三)【参考资料】CocosCreator3.x 应用在UI(Sprite) 上的 shader(.effect) 的合批,通过自定义顶点参数

参考资料

资料1

来源:https://forum.cocos.org/t/topic/148747/28
用户:homym(tkhoi01281)

3.x 版自定参数我是利用createMesh方法去生成ui,因为createMesh就有自定义顶点参数的方法

这个改动其实是可以弄一个新sprite 来继承老spirte, 然后把引擎里的simple.ts,splice.ts 等assembler 拷一份出来, 放到自己项目, 然后新sprite 复写一下assembler的初始化改为取你魔改的simple.ts,splice.ts就能弄一个新的sprite跟老的sprite一起用又不用改动引擎, 唯一缺点是新sprite和老sprite不能共同一个material

针对提问 “您好, 我也是想在3.x中使用自定义顶点合批。你是使用的 utils.createMesh 方法吗。”
不是,3.x版以sprite为例,需先继续Sprite,然后复写函数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

来源:https://forum.cocos.org/t/topic/95087
用户:GT(caogtaa)

介绍了在 CocosCreator2.x 中怎么完成如题需求。

posted @ 2023-10-26 14:00  bakabird1998  阅读(70)  评论(0编辑  收藏  举报