场景图形除了提供底层渲染 API中具备的几何信息和状态管理功能之外,还兼具如下的附加特性和功能:
-
空间结构:场景图形所采用的树状数据结构更直观,也更符合人们一般 理解中的空间事物的排布和组织结构。
-
场景拣选:使用本地 CPU 的投影剔除(frustum culling)和隐藏面剔除(occlusion culling)来减少系统总体负担,其基本原理是,在最终渲染 图像时忽略对不会显示的几何体的处理。
-
细节层次(LOD):使用几何体包围盒计算观察者与物体的距离,使得 用户可以更高效地渲染处于不同细节层次上的物体。并且,实时的,场景中进入指定观察距离的那部分对象将从磁盘中载入,而它们一旦超出这一距离时,将从内存中被移除。
-
透明:要实现透明或半透明几何体的正确和高效的渲染,需要首先渲染 所有不透明的几何体,再渲染透明几何体。而且,透明几何体必须按照深度排序并按照“从后向前”的顺序渲染。场景图形一般都会提供上述 这些操作。
-
状态改动最少化:为了最大限度地提升程序性能,应该避免冗余和不必 要的状态改变。场景图形会按状态对几何体进行排序以最小化状态改 动,OpenSceneGraph 的状态管理工具则负责消除冗余的状态改变。
-
文件 I/O:场景图形可以高效地读写磁盘上的 3D数据集。在将数据读入内存之后,应用程序可以方便地通过内建的场景图形数据结构操控动态3D数据。场景图形也是一个高效的文件格式转换工具。
-
更多高性能函数:除了底层 API提供的基础函数之外,场景图形库还提供了高效能的功能函数,例如全特性的文字支持,渲染特效的支持(例如粒子特效,阴影),渲染优化,3D模型文件读写的支持,并支持对跨 平台的输入、渲染及显示设备的访问。