osg添加光源
osg添加光源
#include <osg/Light>#include <osg/LightSource>#include <osg/Node>#include <osg/Geode>#include <osgDB/ReadFile>#include <osgViewer/Viewer>int main(){ // 创建一个场景节点 osg::ref_ptr<osg::Node> root = new osg::Geode(); // 创建一个光源 osg::ref_ptr<osg::LightSource> lightSource = new osg::LightSource(); // 创建一个光源下的子节点 osg::ref_ptr<osg::Node> lightChild = osgDB::readNodeFile("earth.osg"); // 这里读取一个模型文件作为光源下的子节点 lightSource->addChild(lightChild); // 创建一个灯光对象,设置灯光的位置和颜色 osg::ref_ptr<osg::Light> light = new osg::Light(); light->setLightNum(0); // 设置灯光的编号,这里设置为0号灯光 light->setPosition(osg::Vec4(0.0f, 0.0f, 1.0f, 0.0f)); // 设置灯光的位置,这里设置为在z轴正方向上 light->setDiffuse(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f)); // 设置灯光的漫反射颜色,这里设置为白色 light->setSpecular(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f)); // 设置灯光的镜面反射颜色,这里也设置为白色 // 将灯光加入到光源中 lightSource->setLight(light); // 将光源加入到场景节点中 root->addChild(lightSource); // 创建视图器,将场景节点添加到视图器中 osgViewer::Viewer viewer; viewer.setSceneData(root); // 开始渲染并显示视图器窗口 return viewer.run(); }
#########################################
QQ 3087438119