
OSG
文章平均质量分 50
zhangxl
这个作者很懒,什么都没留下…
展开
-
OSG回调机制
在OSG中设置有osg::Node 、osg::Drawable、osg::Camera等回调。 osg::Node可以在OSG执行更新和拣选遍历时进行回调; osg::Drawable可以在拣选和绘制遍历时进行回调; osg::Camera可以在更新便利时进行回调;在用户应用程序创建回调需要以下步骤:(1)编写继承自osg::NodeC原创 2015-06-17 16:07:13 · 1990 阅读 · 0 评论 -
OSG更新回调(UpdateCallback)与事件回调(EventCallback)的相似之处和不同之处
相似之处:(1)由专门的访问器对象 _updateVisitor负责场景图形的更新遍历(2)所有的节点和Drawable几何体对象都可以调用setUpdateCallback设置回调(3)通过实现NodeCallback::operator()或者DrawableCallback::update()函数在相应的对象中添加自定的回调操作不同之处:(1)每个用户交互或者系统原创 2015-12-03 11:37:49 · 4655 阅读 · 0 评论 -
OSG垃圾收集机制(DeleteHandler)
C++中最通用的删除对象的方法是delete,OSG 的智能指针也是采用这种方式来释放对象的,不过由于OSG采用多线程更新/渲染的方式(这一点我们会在后面的日子中详细介绍),这样做可能带来会某些隐患,想象这样一种情况:1、场景某个的节点负责显示某种图形,它的工作一直很正常;2、我们采用DrawThreadPerContext 或者CullThreadPerCameraDrawThr原创 2015-08-02 15:47:49 · 1683 阅读 · 0 评论 -
OSG更新遍历(updateTraversal)流程
OSG 的更新遍历函数updateTraversal 在系统每帧的执行过程中有着重要的地位,除了处理用户的更新回调对象之外,还要负责更新摄像机的位置,并且更新分页数据库DatabasePager 和图像库ImagePager 的内容。这里我们首先对它的流程做一个概述:1、获取函数的起始时刻。2、使用预设的更新访问器_updateVisitor,访问场景图形的根节点并遍历其子节点,实原创 2015-08-03 11:13:36 · 1468 阅读 · 0 评论 -
OSG 视景器、漫游器、摄像机与场景的关系
视景器包括几个最主要的组件:漫游器_cameraManipulator,用于实现交互式的场景漫游;事件处理器组_eventHandlers,负责处理视景器的事件队列_eventQueue,主要是键盘/鼠标等事件的处理;场景_scene,它包括视景器所对应的场景图形根节点,以及用于提高节点和图像数据处理速度的两个分页数据库;摄像机_camera 和_slaves,前者为场景的主摄像机原创 2015-08-02 16:01:45 · 3646 阅读 · 0 评论 -
OSG视景器四种线程模型(摘自Array《最长的一帧》)
OSG 的视景器包括四种线程模型,可以使用setThreadingModel 进行设置,不同的线程模型在仿真循环运行时将表现出不同的渲染效率和线程控制特性。通常而言,这四种线程的特性如下:SingleThreaded:单线程模型。OSG 不会创建任何新线程来完成场景的筛选和渲染,因而也不会对渲染效率的提高有任何助益。它适合任何配置下使用。CullDrawThreadPerCon原创 2015-08-02 10:32:34 · 3941 阅读 · 0 评论 -
OSG updateTraversal(更新遍历)
OSG 的更新遍历函数updateTraversal 在系统每帧的执行过程中有着重要的地位,除了处理用户的更新回调对象之外,还要负责更新摄像机的位置,并且更新分页数据库DatabasePager 和图像库ImagePager 的内容。这里我们首先对它的流程做一个概述:1、获取函数的起始时刻。2、使用预设的更新访问器_updateVisitor,访问场景图形的根节点并遍历其子节点,实原创 2015-08-07 14:53:58 · 2400 阅读 · 0 评论 -
OSG内存管理——智能指针
智能指针的使用为用户提供了一种自动内存释放的机制,场景图形中的每一个节点均关联一个内存计数器,当计数器的计数减到0时,该对象自动释放放。用户如果希望释放整个场景图形的节点,则只需要删除根结点,根结点一下的所有分支节点均会被自动删除而无需担心内存泄漏问题。Reference类Reference类实现了对内存区段的引用计数器功能。所有的OSG节点和场景图形数据,包括状态信息、顶点数组、法线以及原创 2015-06-12 15:51:29 · 1876 阅读 · 0 评论 -
OpenGL、OSG纹理
纹理贴图的步骤: 1.创建纹理对象,并为其指定一个纹理 2.确定纹理如何应用到每个像素上 3.启用纹理贴图功能 4.绘制场景、提供纹理和几何坐标OSG纹理: 过滤(Filter):详细解释了当纹理应用于多边形的像素时是如何放大或缩小的 enume FilterParameter { MIN_FILTER//用于缩小原创 2015-06-01 20:06:57 · 854 阅读 · 0 评论 -
OSG Note
1. osg::NodePath 在Node中定义,原创 2016-02-25 11:00:18 · 553 阅读 · 0 评论