Referenced(constReferenced&) { _refCount=0; } inline Referenced&operator= (constReferenced&) {return*this; }/** Increment the reference count by one, indicating that this object has another pointer which is referencing it.*/inlinevoidref()const;/** Decrement the reference count by one, indica...
osg::ref_ptr<osg::Geometry> geo1 =newosg::Geometry; printf("%d, %d, %d\n", root->referenceCount(), node1->referenceCount(), geo1->referenceCount()); root->addChild(node1.get()); node1->addDrawable(geo1.get()); printf("%d, %d, %d\n", root->referenceCount(), node1->ref...
它实现了一个用于跟踪内存使用情况的内存计数(reference count),如果某个继承自Referenced的对象,其引用计数数值等于0,那么系统将自动调用其析构函数,并清理为此对象分配的内存。 2)ref_ptr类:模板类ref_ptr为其模板内容提供了一个智能指针,模板内容必须继承自Referenced类或提供一个类似的接口,当对象的地址分配给ref_...
渲染顺序设置为POST,否则可能会被场景中的其他图形所覆盖。 设置参考贴为绝对型:setReferenceFrame(osg::Transform:ABSOLUTE_RF) 使其不受父节点变换的影响:setMatrix(osg::Matrix::identity()) 投影矩阵通常会设置为屏幕尺寸大小 相机(Camera) 相机(osg::Camera)和视口(Viewport)是两个核心概念,对于理解OS...
camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);//设置参考帧 为绝对坐标系 camera->setProjectionMatrixAsOrtho2D(0,1024,0,768); //设置二维正交投影 osg::ref_ptr<osg::Geode> geode = new osg::Geode; geode->getOrCreateStateSet()->setMode(GL_LIGHTING,osg::StateAttribute::OFF);//关闭...
OSG的内存管理 一个典型的应用程序使用一个指针来保存根节点的地址,从而引用(reference)整个场景图形。应用程序并不保存场景图形中其它节点的指针。其它所有的节点,均通过根节点直接或者间接地被引用。当应用程序不再使用场景图形时,每个节点所使用的内存需要释放以避免内存泄露。如果要编写代码遍历整个场景图形,并依次删除...
pCamera->setReferenceFrame(osg::Transform::ABSOLUTE_RF); // 步骤四:不受父类矩阵影响 pCamera->setViewMatrix(osg::Matrix::identity()); // 步骤五:清除深度缓存 pCamera->setClearMask(GL_DEPTH_BUFFER_BIT); // 步骤六:设置为不接受事件,让其得不到焦点 ...
ProjectionMatrixAsOrtho2D(0,1920,0,1080);// 步骤三:设置视图矩阵pCamera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);// 步骤四:不受父类矩阵影响pCamera->setViewMatrix(osg::Matrix::identity());// 步骤五:清除深度缓存pCamera->setClearMask(GL_DEPTH_BUFFER_BIT);// 步骤六:设置为不接受事件...
osg::Referenced类是osg中所有成员的base class.它的方法主要是 ref(),unref(),referenceCount(). ref().是在这个类被osg::ref_ptr<>包装时,就是把计数器+1. unref():包装了这个类的osg::ref_ptr<>被释放时,计数器-1.当为0时,就是回收这块内存空间. ...
camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF); camera->setClearMask(GL_DEPTH_BUFFER_BIT); camera->setRenderOrder(osg::Camera::POST_RENDER); camera->setAllowEventFocus(false); camera->setProjectionMatrix(osg::Matrix::ortho2D(left,right,bottom,top)); ...