我要发帖 回复

正式会员

6

主题

47

积分

0

专家分

:

私信
发表时间 : 2007-10-9 17:37:35 | 浏览 : 1899    评论 : 7
下面是一段程序:
#include <osg/Geode>
#include <osg/Group>
#include <osg/Geometry>
#include <osg/PositionAttitudeTransform>
#include <osgViewer/Viewer>

#include <osgDB/ReadFile>

osg::ref_ptr<osg::Node> createSceneGraph()
{
        // 将类型为Group的root节点作为整个场景图的根节点。
        osg::ref_ptr<osg::Group> root = new osg::Group;
        osg::ref_ptr<osg::Geode> pyramidGeode = new osg::Geode;
        osg::ref_ptr<osg::Geometry> pyramidGeometry = new osg::Geometry;
       
        pyramidGeode->addDrawable(pyramidGeometry.get());
        root->addChild(pyramidGeode.get());
       
        osg::ref_ptr<osg::Vec3Array> pyramidVertices = new osg::Vec3Array;
        pyramidVertices->push_back( osg::Vec3( 0, 0, 0) ); // front left
        pyramidVertices->push_back( osg::Vec3(10, 0, 0) ); // front right
        pyramidVertices->push_back( osg::Vec3(10,10, 0) ); // back right
        pyramidVertices->push_back( osg::Vec3( 0,10, 0) ); // back left
        pyramidVertices->push_back( osg::Vec3( 5, 5,10) ); // peak
       
        // 将顶点数据关联到几何信息类。
        pyramidGeometry->setVertexArray( pyramidVertices.get() );
         
        osg::DrawElementsUInt* pyramidBase =
                new osg::DrawElementsUInt(osg::PrimitiveSet::QUADS, 0);
        pyramidBase->push_back(3);
        pyramidBase->push_back(2);
        pyramidBase->push_back(1);
        pyramidBase->push_back(0);
        pyramidGeometry->addPrimitiveSet(pyramidBase);
               
        return root.get();
}

int main( int argc, char **argv )
{
        osgViewer::Viewer viewer;
        viewer.setSceneData( createSceneGraph().get() );
                      viewer.run();
}
可以运行,但探出一个对话框
报错为:Unhandled exception at 0x7c921230 in BasicGeometry.exe: User breakpoint.
好像是osg::DrawElementsUInt* pyramidBase =
        new osg::DrawElementsUInt(osg::PrimitiveSet::QUADS, 0);
        pyramidBase->push_back(3);
        pyramidBase->push_back(2);
        pyramidBase->push_back(1);
        pyramidBase->push_back(0);
        pyramidGeometry->addPrimitiveSet(pyramidBase);
这里有问题,我的环境是VS2003
不知哪位大侠可以帮忙!!!
谢谢啦!!!

最近VR访客

FlySky 评论于2007-10-9 19:00:15
你把函数的返回类型改为osg::Node*~~~~

并且把里面的root定义这样写:

osg::Group* root = new osg::Group() ;

试下~~~~

OSG中国官方网站:http://www.osgChina.org
OSG中国官方讨论区:http://bbs.osgChina.org

OSG专业群-OSG地形研究者 49668412
      OSG地形专业研究 45763709
thb8177 评论于2007-10-10 13:54:40
好像不行呀,有谁可以解释一下为啥会出现这样的错误么?
FlySky 评论于2007-10-10 15:33:02
[quote]原帖由 [i]thb8177[/i] 于 2007-10-10 01:54 PM 发表 [url=http://www.52vr.com/bbs/redirect.php?goto=findpost&amp;pid=17044&amp;ptid=3926][img]http://www.52vr.com/bbs/images/common/back.gif[/img][/url]
好像不行呀,有谁可以解释一下为啥会出现这样的错误么? [/quote] 


真的不可以吗?? )16 )16 )16

其实这个程序本来就没有什么问题~~~~不知道你的OSG是自己编译的还是从网上下的安装包,,如果是安装包的,好象没有2。0适合VS2003的安装包,,那问题可就多了~~

我今天去亲自试了,,那样改也没什么问题了,难道说你的这个程序不是在画一个四边行吗 ~~~~~~


效果图如下:

s.JPG

OSG中国官方网站:http://www.osgChina.org
OSG中国官方讨论区:http://bbs.osgChina.org

OSG专业群-OSG地形研究者 49668412
      OSG地形专业研究 45763709
FlySky 评论于2007-10-10 15:38:49


自己去试试吧,,

OSG中国官方网站:http://www.osgChina.org
OSG中国官方讨论区:http://bbs.osgChina.org

OSG专业群-OSG地形研究者 49668412
      OSG地形专业研究 45763709
FlySky 评论于2007-10-10 15:51:59
如果说你想绘制的是多段四边形,那你的绘图指令应该是QUADS_STRIP

OSG中国官方网站:http://www.osgChina.org
OSG中国官方讨论区:http://bbs.osgChina.org

OSG专业群-OSG地形研究者 49668412
      OSG地形专业研究 45763709
thb8177 评论于2007-10-10 16:57:34
首先非常感谢版主和一楼那位仁兄的回复。我把版主的代码也运行了,可以运行。但在退出时,他弹出一个错误,如下图:
11.JPG
不知为何?
请大家指导我一下。

[ 本帖最后由 thb8177 于 2007-10-10 05:52 PM 编辑 ]
FlySky 评论于2007-10-10 18:18:06
很有可能是你的dll中设置了断点,或者exe中有断点~~~~

OSG中国官方网站:http://www.osgChina.org
OSG中国官方讨论区:http://bbs.osgChina.org

OSG专业群-OSG地形研究者 49668412
      OSG地形专业研究 45763709

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-10-29 01:01 AM

返回顶部