Atlas 并没有减少drawcall 需要手动设置什么东西嘛

三张男士小背心在一个合图里面

creator渲染次数为4次


层次结构,我还故意把小图都放在了一个node下面。

cocos2dx渲染次数为2次

代码:

auto bg = createSp("homesc/shoplayer/bb_bg_6.jpg");
    bg->setPosition(g_winCenter);
    addChild(bg);

    /*auto bg2 = createSp("homesc/shoplayer/bb_bg_6.jpg");
    bg2->setPosition(g_winCenter);
    bg2->setScale(0.05f);
    addChild(bg2, 65);//这里故意把zorder插在下面小图之间
    */

    float startPosX = -200;
    float disY = -100;
    float startPosY = 300;
    for (int i = 1; i < 4; i++)
    {
        auto str = StringUtils::format("#0002_02_%d.png", i);
        auto sp1 = createSp(str);
        sp1->setPosition(vec2Creater(startPosX, startPosY + disY*i));
        sp1->setLocalZOrder(i * 30);//故意把zorder设置成不一样
        addChild(sp1);
    }

我故意把zorder设置不一样渲染次数还是2次。

我把bg2注释去掉渲染次数为4次,而不是5次。感觉2dx优化的挺好的啊。
如果能够动态判断同时批量渲染不会与高层级的图像重叠,就更好了。

另外:游戏是换装游戏,里面有很多的item菜单详情,里面有很多的label,再加上字体描边,draw call的次数相当可观,有什么简单可行的方案减少drawCall嘛

你使用 Canvas 渲染模式还是 WebGL ?

WebGL渲染4次 Canvas更甚渲染了7次