qian
Laya.loader.load( 'res/atlas/comp.json', Handler.create(this, function(){
container = new Laya.Sprite();
var x = 0,y =80;
Laya.stage.addChild(container);
for(var i=0;i<1200;i++){
var role = new Laya.Sprite();
x = x+0.1;
y = y+0.1
role.x = x;
role.y = y;
role.loadImage('comp/bg.png');
container.addChild(role);
var role2 = new Laya.Sprite();
x = x+0.1;
y = y+0.1
role2.x = x;
role2.y = y;
role2.loadImage('comp/image.png'); //这里如果用了同个图集里面的 只会
// role2.loadImage('image.png');//这里如果用了单独的一个图片,那么就会产生2400个drawcall
container.addChild(role2);
}
}), null, Loader.ATLAS);
注意 我清楚 为什么 role2.loadImage('image.png');用了这句话之后 会产生2400个drawcall(因为图集交叉渲染了) 这个不用再和我解释了
请看清楚我不明白的点是:
1.我确保了同一个层里面用的是同个图集,把drawcall降低到了1的情况下,fps也提升不上去,一定要出必杀技 cacheas=bitmap才可以把fps提升上去,那么问题来了,如果我只是单纯的把drawcall降低,实际上是不能直接把fps提升上去的,更加决定fps的实际上还是节点的层级个数,所以还得用cacheas=bitmap才能真正提升fps,而所谓的技术文档里面推荐的优化方式 “尽量保证同图集的图片渲染顺序是挨着的,如果不同图集交叉渲染,会增加DrawCall数量”这种操作并不能直接提升fps 只是为了让drawcall数据好看一点而已,https://ldc.layabox.com/doc/?nav=zh-as-3-2-2
2.可以和我说明下为什么没有合并drawcall的情况下 调试面板的内存占用很高 而如果同个层级里面使用了同I一个图集之后 占用内存很低呢 看图