• osg StateSet::setRenderBinDetails 用于控制对象绘制的顺序


    StateSet::setRenderBinDetails 用于控制对象绘制的顺序,函数第一个参数表示绘制优先级

    第二个参数

    RenderBin 表示在渲染树中新建分支进行渲染

    DepthSortedBin  表示新建分支,并且所有要渲染的数据将按照深度值降序进行排序。

    注意,当字符串参数不为“RenderBin”或“DepthSortedBin”时,渲染顺序的设定也是
    无效的;当字符串参数和整型参数均有效时,OSG 系统将尝试寻找同类型的渲染元节点并
    将StateSet 记录到此“渲染元”中,或者创建新的“渲染元”节点。

    实例代码

    // 缺省渲染方式,渲染顺序0,此时状态节点直接置入“渲染台”
    stateSet->setRenderBinDetails( 0, “” );

    // 渲染顺序-1(先渲染),此时渲染树中将新建一个“渲染元”节点
    stateSet->setRenderBinDetails( -1, “RenderBin” );

    // 渲染顺序10,此时将新建一个“渲染元”,并按深度值降序排序各元素
    stateSet->setRenderBinDetails( 10, “DepthSortedBin” );

    StateSet::setRenderingHint 简化版设置

    为了简化操作,用户程序还可以使用StateSet::setRenderingHint 来设置渲染的顺序,这
    个函数的传入参数可以为枚举量OPAQUE_BIN 或TRANSPARENT_BIN。前者可以指定该
    渲染状态用于不透明物体的渲染,后者则指定该渲染状态用于透明物体的渲染,此时OSG
    自动将其渲染顺序置后,并设置它所管理的“状态节点”和“渲染叶”数据按照深度值降序
    进行排序。

    关于 setRenderBinDetails 与setRenderingHint 的关系,也可以这样解释:
    stateSet->setRenderingHint ( OPAQUE_BIN );
    stateSet->setRenderingHint ( TRANSPARENT_BIN );
    分别等价于:
    stateSet->setRenderBinDetails( 0, “RenderBin” );
    stateSet->setRenderBinDetails( 10, “DepthSortedBin” );

  • 相关阅读:
    1. MySQL的安装与配置
    18. SQL优化
    19. 优化数据库对象
    20. 锁问题
    21. 优化MySQL Server
    整合SSM基本配置
    第七周实验报告(五)&周总结
    Java作业-实验四
    Java实验三
    在IDEA中创建maven工程添加webapp
  • 原文地址:https://www.cnblogs.com/fishpro/p/16044360.html
Copyright © 2020-2023  润新知