查看: 740|回复: 1

如何使得一个正方形(rectangle) 的两个面都可以被照亮呢?

[复制链接]

该用户从未签到

发表于 2014-3-2 09:19:31 | 显示全部楼层 |阅读模式
就是面向我的这一个面(front face) 是被照亮的. 但是如果把 正方形的 背面转过来, 就是黑的了. 虽然是一个光源, 但是我对 front 和 back face 都加了法向量, 背面转过来的时候应该被光源照亮啊?

  1.         v->push_back(leftTop);
  2.         v->push_back(rightTop);
  3.         v->push_back(rightBottom);
  4.         v->push_back(leftBottom);

  5.         osg::ref_ptr<osg::Vec4Array> color = new osg::Vec4Array;
  6.         color->push_back(osg::Vec4(1.0,1.0,1.0,1.0));

  7.         osg::ref_ptr<osg::DrawArrays> da = new osg::DrawArrays(GL_QUADS, 0, v->size());

  8.         geometry->setVertexArray(v);
  9.         geometry->addPrimitiveSet(da);
  10.         geometry->setColorArray(color);
  11.         geometry->setColorBinding(osg::Geometry::BIND_OVERALL);

  12.         osg::Vec3Array* quadNormal = new osg::Vec3Array;
  13.         geometry->setNormalArray(quadNormal);
  14.         geometry->setNormalBinding(osg::Geometry::BIND_OVERALL);
  15.         quadNormal->push_back(osg::Vec3(0.f, -1.0f, 0.0f));
  16.         quadNormal->push_back(osg::Vec3(0.f, 1.0f, 0.0f));
复制代码


不知道该如何处理啊, 加了disable cull face 还是没用:
  1. Group::getOrCreateStateSet()->setMode(GL_CULL_FACE, osg::StateAttribute::OFF | osg::StateAttribute::OVERRIDE);
复制代码

该用户从未签到

发表于 2014-3-14 04:01:21 | 显示全部楼层
……您所谓的“对 front 和 back face 都加了法向量”的做法看起来没有任何意义。OpenGL只有顶点法线的概念
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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