opencascade AIS_InteractiveContext源码学习5 immediate mode rendering 即时模式渲染 原创
AIS_InteractiveContext
前言
交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行修改。如果交互对象尚未加载到交互上下文中,您才能直接调用交互对象的方法。
每个可选择的对象必须指定负责整体选择对象的选择模式(全局选择模式)。交互上下文本身支持使用选择过滤器进行分解对象的选择。默认情况下,全局选择模式等于0,但如果需要,可以重新定义。
immediate mode rendering 即时模式渲染
1:BeginImmediateDraw
初始化要显示的演示文稿列表,如果没有打开本地上下文,则返回 False。
2:ImmediateAdd
如果 <anIObj>
已存储在列表中,则返回 True。
3:EndImmediateDraw
重载1:使用主视图的第一个活动视图!如果立即显示已完成,则返回 True。
重载2:如果立即显示已完成,则返回 True。
4:IsImmediateModeOn
初始化要显示的演示文稿列表,如果没有打开本地上下文,则返回 False。
5:RedrawImmediate
重新绘制所有视图中的即时结构,考虑其可见性。
用法示例
在 opencascade 中,AIS_InteractiveContext 类提供了与交互式场景中对象显示和交互相关的功能。Immediate mode rendering(即时模式渲染)通常用于实时更新或重新绘制图形对象,以反映用户操作或其他实时变化。
在 AIS_InteractiveContext 中,使用 immediate mode rendering 可能涉及以下操作:
-
更新对象属性:通过 AIS_InteractiveObject 类的方法,可以实时更新对象的颜色、线型、填充样式等属性,并立即反映在视图中。
Handle(AIS_InteractiveObject) anIObj = ...; // 获取交互式对象 anIObj->SetColor(...); // 更新颜色 anIObj->SetWidth(...); // 更新线宽 context->Redisplay(anIObj, Standard_True); // 重新显示对象
-
重新显示对象:调用 AIS_InteractiveContext 的 Redisplay 方法可以重新显示对象,使其在视图中立即更新。
context->Redisplay(anIObj, Standard_True); // 重新显示对象
-
设置显示模式:通过 AIS_DisplayMode 可以设置对象的显示模式,例如 Wireframe、Shading、Color、Selection 等,以及选择是否实时更新。
anIObj->SetDisplayMode(AIS_Shaded, Standard_True); // 设置显示模式为 Shading 并实时更新
-
管理视图更新:在使用 immediate mode rendering 时,通常需要管理视图的更新,确保对象属性和显示模式的更改能够即时反映在所有视图中。
context->UpdateCurrentViewer(); // 更新当前视图
这些操作结合使用,可以实现在 opencascade 的 AIS_InteractiveContext 中进行 immediate mode rendering,以便实时更新和重新绘制交互式对象的显示效果。
继续management of active Selection Modes