6.osg中光照的使用

在球的基础上进行操作。

添加光照前:

添加光照后:


实现如下:

osg::LightSource*createLight()

{

    osg::ref_ptr<osg::Light> l = newosg::Light;

    l->setLightNum(0);//启用第几个光源  OpenGL有8个光源

    //l->setAmbient(osg::Vec4(0.0f,1.0f,1.0f,1.0f));//环境光成分 太强影响照射 此处不用

    //l->setDiffuse(osg::Vec4(0.0f,1.0f,1.0f,1.0f));//散射光成分

    //l->setSpecular()镜面光成分

    l->setDirection(osg::Vec3(0,0,-1));//方向

    l->setPosition(osg::Vec4(0.0,0.0,100.0,0.0f));//位置

    osg::LightSource* ls = newosg::LightSource();//此处用超级指针 返回会发生错误

    ls->setLight(l);

    return ls;

}

注:osg::ref_ptr相当于一个指针,但实际上是一个模板类(重载了*与=操作符),使用时对象必须继承自osg::Referenced(该类为所有要引用计数类的基类)

osg::LightSource继承自osg::Referenced,此处不知为何返回出错

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值