转载:OGRE一起学(八)光源
第八章 光源
运行截图:
在这一个示例中,由于使用了光源,使得物体产生了自身阴影 (Self Shadowing) ,增强了物体的立体感和场景渲染的真实度。
核心代码:
// 创建光源 Light* pLight = mSceneMgr->createLight( "MainLight" ); // 设置光源的类型: pLight->setType( Light::LightTypes::LT_DIRECTIONAL ); // 设置光源的位置: pLight->setPosition( 60, 80, 100 ); // 设置光源的方向: pLight->setDirection( -60, -80, -100 ); // 设置散射光颜色: pLight->setDiffuseColour( 1.0, 1.0, 0.0 ); // 设置反射光颜色: pLight->setSpecularColour( 0.0, 0.0, 1.0 );
不知道你有没有注意到,跟上一个示例中我们在场景中显示一个模型实体 (Entity) 不同,我们直接创建了一个光源,为它设置了各种属性,但是,我们并没有像上一个示例中我们创建模型实体那样明确地为这个光源创建一个场景节点并把它绑定到这个场景节点 (Scene Node) 上,但是这个光源显然正确地处在场景中并正常地发挥着照明作用,这并不意味着光源是一种有特权的可移动物体 (Movable Object),只是它在创建时就被默认地绑定在场景根节点 (Root Scene Node) 。 但是这样的话这个光源将只能借助于 setPosition 和 setDirection 两个方法来有限地调整它的空间属性,如果你想更灵活地控制它,完全可以像实体一样为它创建一个场景节点并绑定。
OGRE 具有三种基本光源类型:
enum LightTypes { LT_POINT, // 点光源 LT_DIRECTIONAL, // 方向光 LT_SPOTLIGHT // 锥形光 };
关于光源 Light 的详细信息请自行参看 OGRE API 文档的 OGRE::Light 部分或 OgreLight.h 。