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 可能涉及以下操作:

  1. 更新对象属性:通过 AIS_InteractiveObject 类的方法,可以实时更新对象的颜色、线型、填充样式等属性,并立即反映在视图中。

    Handle(AIS_InteractiveObject) anIObj = ...; // 获取交互式对象
    anIObj->SetColor(...); // 更新颜色
    anIObj->SetWidth(...); // 更新线宽
    context->Redisplay(anIObj, Standard_True); // 重新显示对象
    
  2. 重新显示对象:调用 AIS_InteractiveContext 的 Redisplay 方法可以重新显示对象,使其在视图中立即更新。

    context->Redisplay(anIObj, Standard_True); // 重新显示对象
    
  3. 设置显示模式:通过 AIS_DisplayMode 可以设置对象的显示模式,例如 Wireframe、Shading、Color、Selection 等,以及选择是否实时更新。

    anIObj->SetDisplayMode(AIS_Shaded, Standard_True); // 设置显示模式为 Shading 并实时更新
    
  4. 管理视图更新:在使用 immediate mode rendering 时,通常需要管理视图的更新,确保对象属性和显示模式的更改能够即时反映在所有视图中。

    context->UpdateCurrentViewer(); // 更新当前视图
    

这些操作结合使用,可以实现在 opencascade 的 AIS_InteractiveContext 中进行 immediate mode rendering,以便实时更新和重新绘制交互式对象的显示效果。

继续management of active Selection Modes

posted @ 2024-06-23 16:23  一点灯  阅读(0)  评论(0编辑  收藏  举报  来源