• 产生渲染叶


    inline RenderLeaf* CullVisitor::createOrReuseRenderLeaf(osg::Drawable* drawable,osg::RefMatrix* projection,osg::RefMatrix* matrix, float depth)
    {
        // Skips any already reused renderleaf.
        while (_currentReuseRenderLeafIndex<_reuseRenderLeafList.size() &&
               _reuseRenderLeafList[_currentReuseRenderLeafIndex]->referenceCount()>1)///循环一次,找到没有被引用的渲染叶指针,通过引用计数判断
        {
            osg::notify(osg::NOTICE)<<"Warning:createOrReuseRenderLeaf() skipping multiply refrenced entry."<< std::endl;
            ++_currentReuseRenderLeafIndex;
        }

        // If still within list, element must be singularly referenced then return it to be reused.
        if (_currentReuseRenderLeafIndex<_reuseRenderLeafList.size())//如果找到,则不需要产生新的
        {
            RenderLeaf* renderleaf = _reuseRenderLeafList[_currentReuseRenderLeafIndex++].get();
            renderleaf->set(drawable,projection,matrix,depth);
            return renderleaf;
        }

        // Otherwise need to create new renderleaf.
        RenderLeaf* renderleaf = new RenderLeaf(drawable,projection,matrix,depth);//否则产生新的渲染叶
        _reuseRenderLeafList.push_back(renderleaf);
        ++_currentReuseRenderLeafIndex;
        return renderleaf;
    }

  • 相关阅读:
    25. Spring Boot与缓存 JSR-107、Spring缓存抽象
    24. Spring Boot 自定义Starter (未整理,待续)
    UGUI 锚点
    UGUI Button控件
    UGUI Image控件
    UGUI Text控件
    Unity 角色复活和重新开始游戏
    Unity 读取Excel
    IOS使用C#预处理命令,多种SDK共存
    Unity扩展 四种Menu的区别
  • 原文地址:https://www.cnblogs.com/lizhengjin/p/1838098.html
Copyright © 2020-2023  润新知