查看: 1260|回复: 2

读取osg文件格式的源码疑惑

[复制链接]

该用户从未签到

发表于 2013-7-15 16:49:32 | 显示全部楼层 |阅读模式
在DotOsgWrapper.cpp里有这样一段
  1. osg::Node* DeprecatedDotOsgWrapperManager::readNode(Input& fr)
  2. {
  3.     if (fr[0].matchWord("Use"))
  4.     {
  5.         if (fr[1].isString())
  6.         {
  7.             osg::Node* node = dynamic_cast<osg::Node*>(fr.getObjectForUniqueID(fr[1].getStr()));
  8.             if (node) fr+=2;
  9.             return node;
  10.         }
  11.         else return NULL;

  12.     }

  13.     osg::Object* obj = readObject(_nodeWrapperMap,fr);
  14.     osg::Node* node = dynamic_cast<osg::Node*>(obj);
  15.     if (node) return node;
  16.     else if (obj) obj->unref();

  17.     return NULL;
  18. }
复制代码
fr是Input类型的,通过它打开文件,
搞不清楚fr[0] fr[1] 还有fr+=2 是什么意思,是指代码块?怎么划分代码块的?
DotOsgWrapper这个是干什么的。。。看来还是要从input类慢慢看啊。。。

大神点拨下吧,我想知道怎么把节点的各种数据读进去的。。。

该用户从未签到

发表于 2013-7-16 10:17:26 | 显示全部楼层
您只看这一小部分怎么够,先读一下osgDB里面Field和FieldReader的源代码吧。简单来说,osg格式的读取是有缓冲的,这里的++操作和[]操作都是在缓冲区里跳转位置而已

该用户从未签到

 楼主| 发表于 2013-7-16 11:19:21 | 显示全部楼层
array 发表于 2013-7-16 10:17
您只看这一小部分怎么够,先读一下osgDB里面Field和FieldReader的源代码吧。简单来说,osg格式的读取是有缓 ...

谢谢大神提点,我也是这么想的。

真希望能集众人之力,弄出一部源码说明书。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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