如题,因为如果一次性加载100张微信头像,然后每个头像都用shader裁成圆形。用shader的初衷是因为mask会增加dc,所以使用shader将图片裁成圆形。但是如果动态合图无法发挥作用,那dc还是降不下来。于是,死循环啦,费解呀费解
没有办法吧 如果是本地资源才有办法的。
如果有办法 100个微信头像整合到一个图里面就有办法的
这个让我很费解
动态合图可以作用
但是drawcall降不下来
动态合图一般是有用的,但是如此shader就无法准确的裁掉图片,因为uv已经改变了
能讲讲如何动态合图吗?
spriteFrame对象,可以获取到图片在合图下的uv,以及旋转状态
传入到shader内就能处理了
H5可以试试头像用canvas画到一张图上
能具体讲讲吗
可以看下动态图集的源码,多张图画到一张大图上,同时spriteFrame的uv会变化,shader中传入这张大图
你可以看一下文档里面的”动态合图“,H5下面是默认开启的
但是网络图片加载,貌似不行
网络加载图片应该可以 但是我不知道会不会跟自动合图一样被压缩导致 shader无法使用
你这样弄 是没有合批的吧
drawcall还是合图?
合图是开了的,
只是能保证用合图的纹理依然能够展示正确的shader效果
但是drawcall合不了
如果 合图没有问题的 drawcall 我可以解决的
你用uniform增加了一个uvoffset,这样是无法合批的。
1需要使用相同纹理也就是将所有头像合成一个图集,或者multitexture技术。不过multitexture对于这种头像量大的不太合适。还是建议合成一个图集,可以通过ccc自己的动态合图来解决。
2合成图集后,uv数据发生改变,裁切圆形时不能直接用0.5作为圆心了。不同的图的圆心数据不同。这个数据必须通过顶点数据传给gpu。可以看一看论坛上自定义顶点数据格式的文章,不过这个比较麻烦,还有一个简单的做法,就是通过颜色数据来传你的uvoffset。



