本帖只是一个AIS性能技巧的集合,没有深入解释。这个列表可能会在未来更新。
自定义的AIS对象是关键。
随着OCCT的标准AIS演示,可以有一个良好的开始,但学习如何创建自己的对象和使用现有的演示构建器是实现复杂应用中的多样性和实现最佳性能的必要条件。
AIS_InteractiveObject很昂贵。
将小演示组合成单个对象以减少内存消耗并提高渲染性能。
一个AIS_InteractiveObject并不意味着一个可选择的实体 - 您可以定义对象部分的选择。
将太多几何图形放入单个AIS_InteractiveObject中也不好 - 考虑将太大的对象分割成较小的部分。
将共享共同方面的小原始数组合并成较大的数组。
如果在对象中有数百或数千个Graphic3d_Group :: AddPrimitiveArray()调用,则说明您做错了什么。
每个Graphic3d_Group :: AddPrimitiveArray()映射到单独的绘图调用。 这些调用很昂贵 - 对渲染性能的影响将类似于每个数组创建许多AIS_InteractiveObject(但内存开销较小)。
绘制单个原始数组通常比多个更快。
例如,从形状的多个TopoDS_Face创建单个Graphic3d_ArrayOfTriangles,而不是面与数组之间的一对一映射;其他数组也适用于相同的情况。
避免重新计算整个AIS对象以更改演示方面。
如果要更改AIS对象的单个子部分的颜色 - 将它们放入单独的Graphiv3d_Group中并分配唯一的Graphic3d_Aspects。
在对象构建时创建这些方面(而不是在::Compute()方法内)。 这将允许仅通过调用AIS_InteractiveObject :: SynchronizeAspects&#x