查看: 872|回复: 5

[求助]HelloWorld例程中addChild出问题...

[复制链接]

该用户从未签到

发表于 2015-4-16 16:40:19 | 显示全部楼层 |阅读模式
例程如下,是教程里装完osg之后测试用的第一个例子。
  1. #include <osgViewer/Viewer>

  2. #include <osg/Node>
  3. #include <osg/Geode>
  4. #include <osg/Group>

  5. #include <osgDB/ReadFile>
  6. #include <osgDB/WriteFile>

  7. #include <osgUtil/Optimizer>

  8. int main()
  9. {
  10.         //创建Viewer对象
  11.         osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer();

  12.         //创建场景组节点
  13.         osg::ref_ptr<osg::Group> root = new osg::Group();

  14.         //创建一个节点
  15.         osg::ref_ptr<osg::Node> cow = osgDB::readNodeFile("cow.osg");

  16.         root->addChild( cow.get() );

  17.         osgUtil::Optimizer optimizer;
  18.         optimizer.optimize( root.get() );

  19.         viewer->setSceneData( root.get() );

  20.         viewer->realize();

  21.         viewer->run();

  22.         return 0;
  23. }
复制代码


走到optimizer.optimize( root.get() );这一句调试器报告未知异常,调试发现root下面没有children,但是看addChild函数的返回值确实为true....
我看root本身是个Group类型的,于是到Group.cpp里找到addChild下了断点,但是发现root->addChild( cow.get() );这一句并不会命中此断点,倒是前面一句osg::ref_ptr<osg::Node> cow = osgDB::readNodeFile("cow.osg");会命中,而且调用也正常。
到这我就迷糊了,到底是啥情况?

该用户从未签到

发表于 2015-4-16 17:55:45 | 显示全部楼层
确保添加了OSG_FILE_PATH,否则找不到cow.osg模型,只要能让程序找到cow.osg即可。

该用户从未签到

 楼主| 发表于 2015-4-16 18:10:44 | 显示全部楼层
gisthink 发表于 2015-4-16 17:55
确保添加了OSG_FILE_PATH,否则找不到cow.osg模型,只要能让程序找到cow.osg即可。

OSG_FILE_PATH已经添加了
读入cow.osg那一步是正常的,读完文件之后子节点cow下面有一个名为cow.osg的object,应该能说明读入是正常的。

该用户从未签到

 楼主| 发表于 2015-4-17 10:39:39 | 显示全部楼层
gisthink 发表于 2015-4-16 17:55
确保添加了OSG_FILE_PATH,否则找不到cow.osg模型,只要能让程序找到cow.osg即可。

折腾了一天还是不行....
可以确认读入cow.osg的那一步是没问题的,因为我不建根节点直接用viewer->setSceneData( osgDB::readNodeFile("cow.osg") );把cow加进场景里运行没有问题。
问题是root->addChild( cow.get() );这一句根本就没有调用Group::addChild函数,调用堆栈里找不到,断点也断不下来
这种情况是啥问题?

该用户从未签到

发表于 2015-4-17 17:52:39 | 显示全部楼层
程序没有问题,找其他问题吧,比如库、编译器设置等

该用户从未签到

发表于 2015-4-26 10:38:08 | 显示全部楼层
你要加断点的话要把node的项目加到你的工程下面才会进入断点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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