|
class Teapot : public osg:rawable
{
略,osgteapot的例子一样,未改动
}
osg::Group* createTeapot()
{
osg::Group* root = new osg::Group();
osg::MatrixTransform* trans = new osg::MatrixTransform() ;
osg::Geode* geode = new osg::Geode();
// add the teapot to the geode.
geode->addDrawable( new Teapot ); //第一个茶壶
osg::Geode* geode2 = new osg::Geode();
geode2->addDrawable( new Teapot ); //第二个茶壶
trans->setMatrix(osg::Matrix::translate(5, 0, 2)) ;
trans->addChild(geode2) ; //第二个茶壶平移
root->addChild(geode); //根节点下添加第一个茶壶
root->addChild(trans); //根节点下添加第二个茶壶
return root;
}
出现问题如下:
运行结果只显示第二个茶壶,就是只显示一个茶壶,而且
root->addChild(geode); //根节点下添加第一个茶壶
root->addChild(trans); //根节点下添加第二个茶壶
这两行谁排在后面就显示谁,为什么呢,是后面的Drawable把前面的覆盖了?怎样才能把这两个茶壶都显示出来?
int main(int , char **)
{
// construct the viewer.
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;
// add model to viewer.
viewer->setSceneData( createTeapot() );
return viewer->run();
} |
|