查看: 1528|回复: 4

几何体法线的设定

[复制链接]

该用户从未签到

发表于 2009-10-3 09:20:44 | 显示全部楼层 |阅读模式
创建一个geometry对象(想画成正方形),指定四个顶点,addprimitiveset,加入纹理坐标,运行都正常,但是加入法向量后就一直卡在 doing add...那里了,不知到为什么 设定法向量会出现这样的问题?

代码:

osg::Geode * geoNode = new osg::Geode();
osg::Geometry * geometryNode = new osg::Geometry();
geoNode->addDrawable(geometryNode);
//构造几何体
//顶点数组
osg::Vec3Array * vertecArray = new osg::Vec3Array();
vertecArray->push_back(osg::Vec3(OriginX,OriginY,OriginZ));
vertecArray->push_back(osg::Vec3(OriginX+wideth,OriginY,OriginZ));
vertecArray->push_back(osg::Vec3(OriginX+wideth,OriginY,OriginZ+height));
vertecArray->push_back(osg::Vec3(OriginX,OriginY,OriginZ+height));
//指定顶点数组
geometryNode->setVertexArray(vertecArray);
//加入图形基元


geometryNode->addPrimitiveSet(new osg:rawArrays(osg:rimitiveSet:UADS,0,4));
//纹理坐标
osg::Vec2Array * tex = new osg::Vec2Array();
tex->push_back(osg::Vec2(1,0));
tex->push_back(osg::Vec2(0,0));
tex->push_back(osg::Vec2(0,1));
tex->push_back(osg::Vec2(1,1));
geometryNode->setTexCoordArray(0,tex);
//设定法向量

osg::Vec3Array * normal = new osg::Vec3Array();
normal->push_back(osg::Vec3(0,-1,0));

geometryNode->setNormalArray(normal);
geometryNode->setNormalBinding(osg::Geometry::BIND_OVERALL);


不加红色代码就会正常显示一个正方形,加上后就卡在 DOING ADD 那里了。

有没有人知道为什么呢? 谢谢啦!


该用户从未签到

发表于 2009-10-3 11:21:55 | 显示全部楼层
normal->push_back(osg::Vec3(0,-1,0));
这句错了吧?

该用户从未签到

 楼主| 发表于 2009-10-3 15:11:42 | 显示全部楼层
normal->push_back(osg::Vec3(0,-1,0));
这句错了吧?
ccy_ccy2001 发表于 2009-10-3 11:21


??错在哪里了?我是模仿例程写的。实在看不出来哪里错了?

该用户从未签到

发表于 2009-10-3 15:16:51 | 显示全部楼层
这段代码在我这里运行无误,事实上它也不太可能有错误;请检查其他的代码或者您的链接库设置

该用户从未签到

 楼主| 发表于 2009-10-3 16:42:08 | 显示全部楼层
这段代码在我这里运行无误,事实上它也不太可能有错误;请检查其他的代码或者您的链接库设置
array 发表于 2009-10-3 15:16


hehe,刚才下载了2.8的库,重新装了一下,运行正常,是不是以前用的那个2.0库的问题。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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