osg中结点树、状态树和渲染树的关系

osg中结点树、状态树和渲染树的关系

在osg中,对场景采用结点树(node)的形式管理。结点树具有继承性,叶子节点渲染时的state会受到父节点以及祖父节点等等的stateset的影响。另外,结点树的叶子节点一般是一个可绘制体(drawable)。
为了简化结点树,渲染前会进行一次遍历,把具有相同渲染时state的几何体放到一起,生成一棵状态树(stategraph、renderleaf)。状态树的叶子节点和可绘制体一一对应。
有时候,必须对几何体的渲染顺序进行排序(例如采用顺序相关透明度算法、强制把某个可绘制体渲染到最前面等等),但是,由于渲染时叶子节点的state会受到父节点以及祖父节点等等的stateset的影响,所以必须保证排序后尽量保持原来状态树的结构。为了做到这一点,osg会采用巧妙的算法对原来的状态树的叶子节点进行排序,生成一棵渲染树(renderstage、renderbin)。

你可能感兴趣的:(OSG,c++)