最近在学习OpenSceneGraph,先从几何图形实现开始入手学习。使用两种方法来构建一个正方体。
首先来介绍osg::ShapeDrawable 类,其中是osg::Drawable的子类。一般使用来快速构建基础的几何图形。
先来看看代码
osg::ref_ptr<osg::ShapeDrawable> shape_box = new osg::ShapeDrawable;
shape_box->setShape( new osg::Box(osg::Vec3(0.0f, 0.0f, 0.0f),2.0f, 2.0f, 2.0f) );
shape_box->setColor( osg::Vec4(3.0f, 1.0f, 1.0f, 1.0f) );
osg::ref_ptr<osg::Geode> root = new osg::Geode;
root->addDrawable( shape_box.get() );
osgViewer::Viewer viewer;
viewer.setSceneData( root.get() );
return viewer.run();
osg::ShapeDrawable 下setShape()方法,这个方法通常就是来设置形状的。
shape_box->setShape( new osg::Box(osg::Vec3(0.0f, 0.0f, 0.0f),2.0f, 2.0f, 2.0f) );
其中osg::Vec3(0.0f, 0.0f, 0.0f)设置的是中心坐标,2.0f, 2.0f, 2.0f设置的是宽度、高度、深度。
shape_box->setColor( osg::Vec4(3.0f, 1.0f, 1.0f, 1.0f) );
其中3.0f, 1.0f, 1.0f 是RGB值 ; 1.0f对应的是alpha值(范围0~1)。
osg::ref_ptr<osg::Geode> root = new osg::Geode;
root->addDrawable( shape_box.get() );
Geode存