查看: 1505|回复: 7

osgViewer的重绘机制是如何的?

[复制链接]

该用户从未签到

发表于 2009-11-3 14:17:47 | 显示全部楼层 |阅读模式
一个简单的例子,比方说我初始时建立一个四边形
之后一段时间后,我需要把其中一个顶点的位置变化到其他位置

或者是我想建立一个三角形,就把其中一个点跟另外一个点重合!
(UI界面上控制这些点的变化,或者是数据自动更新过!)

这样的话,osgViewer怎么做才能实现实时更新绘制?变化成我想要的四边形或者是三角形呢?

该用户从未签到

发表于 2009-11-3 15:39:37 | 显示全部楼层
没有osgViewer什么事情,设置Geometry对象为DYNAMIC,设置setUseDisplayList(false),以及setUseVertexBufferObjects(true),然后在回调里动态修改顶点和图元信息就可以了

该用户从未签到

 楼主| 发表于 2009-11-4 11:42:24 | 显示全部楼层
2# array
如果在不用回调的情况下,即本来创建时的数据发生改变的话,Geometry的点在发生变化时,可能是一个数组在不停的更新,osgviewer会不会继续更新!

该用户从未签到

发表于 2009-11-4 12:07:24 | 显示全部楼层
我不明白您要说什么

该用户从未签到

 楼主| 发表于 2009-11-4 13:42:52 | 显示全部楼层
4# array
呃.......好吧!我说的更清楚一点...
来个更简单的比方,如:我们要画一个圆,需要一个顶点和一个半径就可以了!其他因素忽略!
当程序运行中,圆的顶点和圆的半径的在不同时刻,是一个变化的数值...
这样的话,最后会不会在viewer上面实时的更新变化呢?

该用户从未签到

发表于 2009-11-4 14:07:00 | 显示全部楼层
先把节点removeChild ,再从新生成一个节点addchild

该用户从未签到

发表于 2009-11-4 15:06:48 | 显示全部楼层
呃,个人认为qele的方法不太可取。我个人强烈反对在运行时每帧addChild和removeChild,那样既危险又低效。
至于boystu的说法,是否会更新显然是取决于您的,我想我在2L就提供了一种可行性,即使用VBO替代顶点列表,然后在更新回调里改变顶点值——只是不知道您为什么甚至懒得去尝试一下

该用户从未签到

发表于 2009-11-4 15:20:58 | 显示全部楼层
7# array
不错!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表