irrlicht中设置平行光

使用scene manager的addLightSceneNode,默认加入的是点光源,设置平行光,需要自己设置SLight,将其type设置为ELT_DIRECTIONAL,这都好说,问题是光的方向,被误导了一下,因为ILightSceneNode本身没有setDirection之类的方法,而SLight::Direction文档中说是read only的,怎么回事?自己直接设了下,完全没有作用,果然read-only啊。于是查看irrlicht源码,在CLightSceneNode类中,有一个方法doLightRecalc,这个方法中,对于平行光:

LightData.Direction = core::vector3df(.0f,.0f,1.0f);
  getAbsoluteTransformation().rotateVect(LightData.Direction);
  LightData.Direction.normalize();

 

原来是根据transform重新计算这个方向,所以direction是read-only的。直接对light node执行rotate就可以设置方向了~

 

偏偏example中没有用平行光的例子,害我找了好久

你可能感兴趣的:(vector,manager,文档)