首页 > 代码库 > BUG::Cocos V3.2 渲染类中为什么出现同样的两次排序,难道有什么不同吗?手误??----小心开源代码中的陷阱

BUG::Cocos V3.2 渲染类中为什么出现同样的两次排序,难道有什么不同吗?手误??----小心开源代码中的陷阱

{
    // Don't sort _queue0, it already comes sorted
    std::sort(std::begin(_queueNegZ), std::end(_queueNegZ), compareRenderCommand);
    std::sort(std::begin(_queuePosZ), std::end(_queuePosZ), compareRenderCommand);
}



// helper
static bool compareRenderCommand(RenderCommand* a, RenderCommand* b)
{
    return a->getGlobalOrder() < b->getGlobalOrder();
}



排序并不会执行其他操作,是不是手误啊?


可是问题同样发生在V3.3 rc版中


这是渲染命令的排序,目的一般都是性能的最优化,这是什么用意?求解释


然后我把其中一句注释掉,结果果然是正确的。


上一次发现主循环中喜欢用低效的循环:

 for (auto &renderqueue : _renderGroups)
        {
            renderqueue.sort();
        }


这次发现这么坑爹的代码。可读 性不差,但是小问题多多,真要商业化使用还需要工作室自己认真整理一遍才行。

BUG::Cocos V3.2 渲染类中为什么出现同样的两次排序,难道有什么不同吗?手误??----小心开源代码中的陷阱