OpenCascade 不仅提供了下层的几何拓朴表示及其相关算法,也提供了一个显示模块,用于方便的显示构造的几何和拓朴对象。该显示模块提供了方便的封装,允许很简单的实现一个对象的显示和选择等功能。
首先,显示模块能够调用简单的接口显示对象,对象可以有多种显示方式,例如:线框显示、着色显示、纹理显示等,每个对象也可以自定义自己的显示方式。
其次,可以通过简单的接口,实现对象的选取功能,包括:对象的自动选取、选中的高亮显示、对象的选择过滤等。并且,每个对象可以自定义多种选择模式,例如:一个拓朴实体对象,可以允许选择整个对象,也可以选择其中的一个面、一条边等。
显示模块基于 OpenGL 实现。允许设置灯光、材质、纹理等,实现一定的渲染功能。但相对真正的 render 引擎,渲染功能还是比较弱的。
总体结构, OpenCascade 的 visual.pdf 文档中给出了一副结构图。我这里按照自己的理解将其分为了四层,当然层与层之间的并不如下面分层那样明晰,主要为了理解上的方便。四层如下:
AIS 层
/ /
显示管理 选择管理
/ /
visual3d 层
|
OpenGL 层
AIS 层是最顶层,提供了丰富的接口,来方便外部实现对象的显示和选择功能。下面管理层,提供了抽象的显示和选择管理机制,具体的实现都放在 visual3d 层,以便管理和显示图形,最终数据发送到 OpenGL 层,有 OpenGL 层进行绘制。
后续依次详细说明每层的结构和实现。