OSG::ref_ptr在Node中的三种使用方法

方法一,最好的方法,十分安全,也是OSG中最常用的方法

osg::ref_ptr<osg::Node> aNode(new osg::Node());

group->addChild(aNode.get());

方法二,也是非常好的方法,有时候不适用,但也是十分安全。

group->addChild(new osg::Node());

方法三,很危险

osg::Node* anotherNode = new osg::Node();

group->addChild(anotherNode);

方法一:在new osg::Node()时创建了一个Node的资源,这时在堆内引用Node的计算器会被置1. 在group->addChild(aNode.get())时又引用了一次,会再加1。在这两次引用都结束时,Node的资源就会被释放。

方法二:这个方法也是很实用的,但是无法引出Node的指针,该指针也许在别处需要使用,事实上这种情况经常发生。可以使用NodeVisitor来得到Node的指针,也可以使用find Child方法来得到Node的指针。

方法三:这个应该是最常用,最不好的方法,原因在于如果在osg::Node* anthernode = new osg::Node();之后程序发生了错误,抛出了异常,那么Node所占用的资源无法释放掉。尤其是程序异常被捕获后,程序继续正常运行,此时内存状态处在不正常状态下。

OSG中osg::ref_ptf类的巧妙设计相关推荐

  1. C++实验6 改造实验5中的Player类、自行设计字符串类

    [实验名称]数组.指针与字符串 [实验目的] 1.练习观察指针的内容及其所指的对象的内容 2.通过动态内存分配实现数组,并体会指针在其中的作用. 3.使用字符数组练习处理字符串的方法. [实验原理] ...

  2. OSG中OSG和IVE文件的关系

    为了加快模型导入和显示的速度,每个视景驱动软件都有自己的二进制格式,比如Vega的FST,Vega Prime的VSB,Performer的PFB 等.       OSG里面的就是IVE,所以在我们 ...

  3. SpreadJS轻松实现类Excel报表设计,轻松实现线下线上数据平滑迁移!

    什么是类Excel报表设计? 类Excel报表设计,是用来展示和使用数据的过程,目前已广泛应用于企业日常生产经营活动中.使用类 Excel 模式设计各类报表,既可以保留用户的使用习惯,又可以轻松实现数 ...

  4. osg中运用Shader(osg初级篇2)

    关于shader的概念,可以参见我的另一篇博客<opengl版本发展史及各种概念的厘清>,这里列举一个例子,用来实现一个特效,屏幕的左半部显示为红色.首先我们准备好两个shader程序: ...

  5. osg中三维模型的位置变换

    对模型的平移和旋转等操作是我们在做三维软件开发时必然会解决的事情.但是由于基本变换默认是以世界坐标系的原点为变换中心,所以我们在进行平移旋转等操作时往往会发现其并非如我们想象的那样去执行.举个简单的例 ...

  6. cacheinterceptor第二次访问没被调用_访问者设计模式在OSG中的应用

    为什么要谈谈访问者设计模式呢?因为OSG整个引擎就是用访问者设计模式建立起来的,不论是遍历节点图,还是做各种实用的功能,都需要大量的用到访问者设计模式. 先谈谈访问者设计模式的定义. 1:什么是访问者 ...

  7. 7、osg中响应键盘鼠标事件以及鼠标和键盘编码表

    1.首先定义一个类,该类继承与osgGA::GUIEventHandler,在此类中存在一个handle函数,所有的事件都在此函数中进行处理,如下类的代码: //声明类UseEventHandler, ...

  8. osg中NDC坐标转换为世界坐标

    目录 1.前言 2.原理 3.实现 1.前言 使用射线投掷法(Ray-casting)在三维场景中拾取物体时,我们会从观察点,即眼睛所在位置向场景中发射一条射线,射线的方向通常由"鼠标&qu ...

  9. osg中父子节点关系对坐标系的影响(相对坐标绝对坐标%矩阵变换)

    从头梳理一下碰到的坐标问题. osgEarth中坐标系有很多,如世界坐标系,地理坐标系,相机坐标系等等,然后根据形式又分为相对坐标系和绝对坐标系. 这里先记录一下绝对坐标系和相对坐标系 当你构建场景的 ...

  10. 【转】osg中漫游器的原理

    在osg中,编写以下简单代码: 1 osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer(); 2 viewer-& ...

最新文章

  1. tomcat部署 修改域名和访问域名时去掉项目名
  2. python 柱状图-python 柱状图
  3. Ajax技术应用方面
  4. viewpager 自定义翻页效果_轻松打造专业的录音棚效果,连网红用了都说好的唱吧声卡K10套装...
  5. 用wxpython做ui_wxPython - 如何强制UI刷新?
  6. 快速查询ABAP transport request lock status
  7. Struts2框架使用(十)之struts2的上传和下载
  8. javascript实现页面滚屏效果
  9. 中国加氢处理催化剂行业市场供需与战略研究报告
  10. Python 紧急修复远程代码执行漏洞
  11. caffe中 softmax 函数的前向传播和反向传播
  12. 计算机大赛教学辅助课件,职业教育:机械类一等奖作品《识读组合体视图教学辅助》PPT课件.ppt...
  13. python画二次函数图像的顶点坐标为_Python绘制函数图像
  14. 【软件设计师】知识点总结
  15. vs运行程序时报错:“Stack around the variable XXX was corrupted”
  16. java后台管理系统做Excel导入
  17. SwiftUI iOS 开源组件之银行卡切换效果 (教程含源码)
  18. 白翔团队新作:借助CLIP完成场景文字检测
  19. PhotoMOS输出光电耦合器的概要
  20. Android新技术——探秘微信小程序

热门文章

  1. 彻底理解connection timeout
  2. 第七届蛋白质与蛋白质组学国际研讨会(CPP 2022)
  3. 基于B_spline 的非刚性形变
  4. Highcharts的spline示例
  5. 12.0.MATLAB版线性代数-向量数量积及其应用(点积、点乘) 熟记
  6. 用C/C++自己写一个宋词生成器,气质一下子就上来了呀
  7. 华为手机安装debug时出现无效安装和与操作系统不兼容问题解决
  8. 生信笔记:序列同源性、相似性
  9. matlab图像取样和量化,一文看懂数字图像的取样和量化
  10. 计算机系统常见故障及处理,电脑常见故障以及解决方案都在这里