查看: 1486|回复: 6

新手提问关于添加子节点的问题

[复制链接]

该用户从未签到

发表于 2010-10-19 17:13:54 | 显示全部楼层 |阅读模式
请大家帮忙看看这几句代码有什么问题呀?
osg::ref_ptr<osg::Node> glider = osgDB::readNodeFile("glider.osg");
glider->asGroup()->addChild(createBox().get());
glider->asGroup()->addChild(createCone().get());
编译出错.

该用户从未签到

发表于 2010-10-19 17:22:35 | 显示全部楼层
如果是编译出错,可能是group没有定义, 添加#include<osg/Group>

该用户从未签到

发表于 2010-10-19 20:40:43 | 显示全部楼层
把编译错误贴出来

该用户从未签到

发表于 2010-10-20 08:29:13 | 显示全部楼层
如果是编译错误,那么请按照楼上所说给出您的错误信息。不过在我看来您的代码很可能带来运行时错误,因为glider.osg的根节点并不是Group类型,因此glider->asGroup()为空,对它的操作均是非法的

该用户从未签到

 楼主| 发表于 2010-10-20 10:03:00 | 显示全部楼层
感谢各位的辛苦帮忙,我按照qele的提示做了还是不行,下面我把整个代码贴出来大家帮忙分析下哈:
#include "stdafx.h"
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
#include <osg/Node>
#include <osg/Geode>
#include <osg/Geometry>
#include <osg/Shape>
#include <osg/ShapeDrawable>
#include <osg/MatrixTransform>
#include <osg/Group>
#include <osgViewer/ViewerEventHandlers>
#include <iostream>
osg::ref_ptr<osg::Node> createBox();
osg::ref_ptr<osg::Node> createCone();
void _tmain()
{
                osgViewer::Viewer viewer;
        osg::ref_ptr<osg::Group> root = new osg::Group();
                osg::ref_ptr<osg::Node> glider = osgDB::readNodeFile("glider.osg");
                glider->asGroup()->addChild(createBox().get());
        glider->asGroup()->addChild(createCone().get());
                root->addChild(glider.get());
        viewer.setSceneData(root);
        viewer.addEventHandler(new MyEventHandler);
                viewer.realize();
        viewer.run();
}
运行到glider->asGroup....时:未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突

该用户从未签到

发表于 2010-10-20 10:24:29 | 显示全部楼层
楼上array已经解答过你的问题

该用户从未签到

 楼主| 发表于 2010-10-20 10:45:20 | 显示全部楼层
谢谢!搞半天原来是glider.osg的原因呀!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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