osg Box透明度
#include <osg/Node> #include <osgViewer/Viewer> #include <osgDB/ReadFile> #include <osg/ShapeDrawable> int main() { // 创建Box对象 osg::ref_ptr<osg::Box> box = new osg::Box(osg::Vec3(0, 0, 0), 15, 2, 14); box->setHalfLengths(osg::Vec3(7.5, 1, 7)); // 设置Box的尺寸和位置 // 创建Geode对象 osg::ref_ptr<osg::Geode> geode = new osg::Geode(); geode->addDrawable(box.get()); // 将Box添加到Geode中 // 创建材质对象 osg::ref_ptr<osg::Material> material = new osg::Material; material->setAmbient(osg::Vec4(0.5, 0.5, 0.5, 0.5)); // 设置混合光颜色为灰色,并设置透明度为0.5 material->setDiffuse(osg::Vec4(0.5, 0.5, 0.5, 0.5)); // 设置漫反射光颜色为灰色,并设置透明度为0.5 material->setSpecular(osg::Vec4(1, 1, 1, 1)); // 设置镜面光颜色为白色,并设置透明度为1 material->setShininess(128.0); // 设置镜面光强度为128 // 将材质添加到Geode的状态集 geode->getOrCreateStateSet()->setAttributeAndModes(material.get(), osg::StateAttribute::ON); // 创建视图器并显示场景图 osgViewer::Viewer viewer; viewer.setSceneData(geode); viewer.run(); return 0; }
========
QQ 3087438119