查看: 1828|回复: 2

海军教程第一课问题请教

[复制链接]

该用户从未签到

发表于 2009-3-21 23:10:45 | 显示全部楼层 |阅读模式
海军教程第一课里有这么一段话:
为了保证背面剔除(backface cullling)的正确,我们需要按照逆时针的顺序添加顶点数据。类的构造函数使用几何基元枚举类型(与OpenGL的几何基元枚举类型相同)作为输入参数,另一个输入参数是作为起始点的顶点索引值。
osg:rawElementsUInt* pyramidBase =
      new osg::DrawElementsUInt(osg:rimitiveSet:UADS, 0);
   pyramidBase->push_back(3);
   pyramidBase->push_back(2);
   pyramidBase->push_back(1);
   pyramidBase->push_back(0);
   pyramidGeometry->addPrimitiveSet(pyramidBase);
首先这段代码添加顶点的顺序是顺时针,我按照逆时针重新添加顶点后也看不出两者有什么差别,想请教各位顺时针和逆时针添加顶点到底有区别吗?

该用户从未签到

发表于 2009-3-22 09:10:00 | 显示全部楼层
顺时针或者逆时针,这取决于您观察多边形面的方向。如果从Z+向原点看去,那么顶点的排列是顺时针的;如果从Z-向原点看去,那么它们是逆时针的。当然Navy教程在这里说的并不清楚。

这里的代码是为了保证金字塔的底部法线向外(也就是朝向Z-);至于您重新反向添加顶点后看不出差别,我没有实验,不知道您是不是把光照关闭了?

该用户从未签到

 楼主| 发表于 2009-3-22 09:58:50 | 显示全部楼层

回复 2楼 的帖子

受教了,谢谢!

光照倒是没有关,可能刚接触OSG,有些小差别未能发现,继续学习中。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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