当前位置: 首页 > news >正文

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

相关文章:

  • docker镜像基本操作
  • 学习面向对象前--Java基础练习题2
  • Linux安装Maven(详细教程手把手教会)
  • Java开发-面试题-0007-GPT和MBR的区别
  • 安装vue时候发现npm淘宝镜像不能使用,报出:npm.taobao.org和registry.npm.taobao.or
  • 华为HCIP Datacom H12-821 卷7
  • rockchip linux sdk指定编译配置文件
  • 动手学深度学习(Pytorch版)代码实践 -计算机视觉-37微调
  • MySQL 超出月份最大日期(工作总结)
  • “脏读”、“幻读”、“不可重复读”
  • Nuxt3用pm2启动报错[PM2][ERROR] File ecosystem.config.js malformated
  • 数据分析必备:一步步教你如何用matplotlib做数据可视化(10)
  • 【Redis】Redis内存使用优化方法
  • 浙大宁波理工学院2024年成人高等继续教育招生简章
  • 搜狐视频全自动工具
  • Android 控件背景颜色处理
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • eclipse(luna)创建web工程
  • Electron入门介绍
  • flutter的key在widget list的作用以及必要性
  • jdbc就是这么简单
  • js正则,这点儿就够用了
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • linux学习笔记
  • SQL 难点解决:记录的引用
  • vue 个人积累(使用工具,组件)
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 复杂数据处理
  • 官方解决所有 npm 全局安装权限问题
  • 记一次和乔布斯合作最难忘的经历
  • 如何设计一个比特币钱包服务
  • 使用SAX解析XML
  • 世界上最简单的无等待算法(getAndIncrement)
  • 我的业余项目总结
  • 小而合理的前端理论:rscss和rsjs
  • 在Docker Swarm上部署Apache Storm:第1部分
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​业务双活的数据切换思路设计(下)
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (备忘)Java Map 遍历
  • (二)JAVA使用POI操作excel
  • (二)斐波那契Fabonacci函数
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (规划)24届春招和25届暑假实习路线准备规划
  • (接口封装)
  • (十三)MipMap
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .Net多线程总结
  • .NET精简框架的“无法找到资源程序集”异常释疑