|
int main()
{
//创建Viewer对象,场景浏览器
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer();
//创建组节点
osg::ref_ptr<osg::Group> root = new osg::Group();
////////////////////////////////
//创建一个节点,读取滑翔机模型
osg::ref_ptr<osg::Node> node2 = new osg::Node();
node2 = osgDB::readNodeFile("glider.osg");
//创建矩阵变换节点
osg::ref_ptr<osg::MatrixTransform> mt = new osg::MatrixTransform();
//创建一个矩阵
osg::Matrix m;
//在 x轴平移0个单位
m.makeTranslate(osg::Vec3(10.0f,0.0f,0.0f));
//设置Z轴旋转角度90度
m.makeRotate(90.0f,0.0f,0.0f,1.0f);
//设置y轴旋转角度15度
m.makeRotate(15.0f,0.0f,1.0f,0.0f);
//设置矩阵
mt->setMatrix(m);
//添加子节点
mt->addChild(node2.get());
///////////////////////////////////////////////////
root->addChild(mt.get());
//优化场景数据
osgUtil::Optimizer optimizer;
optimizer.optimize(root.get());
//设置场景数据
viewer->setSceneData(root.get());
//创建窗口并初始化
viewer->realize();
//开始渲染
viewer->run();
return 0;
}
编译这个程序之后出现如下错误:
\main.cpp(36) : error C2512: “osg::MatrixTransform”: 没有合适的默认构造函数可用
1>.\main.cpp(46) : error C2027: 使用了未定义类型“osg::MatrixTransform”
1> C:\Program Files\OSG-2.8.2\include\osg/NodeVisitor(31) : 参见“osg::MatrixTransform”的声明
1>.\main.cpp(46) : error C2039: “setMatrix”: 不是“osg::ref_ptr<T>”的成员
1> with
1> [
1> T=osg::MatrixTransform
1> ]
1>.\main.cpp(48) : error C2027: 使用了未定义类型“osg::MatrixTransform”
1> C:\Program Files\OSG-2.8.2\include\osg/NodeVisitor(31) : 参见“osg::MatrixTransform”的声明
1>.\main.cpp(48) : error C2039: “addChild”: 不是“osg::ref_ptr<T>”的成员
1> with
1> [
1> T=osg::MatrixTransform
1> ]
1>.\main.cpp(69) : error C2664: “osg::Group::addChild”: 不能将参数 1 从“osg::MatrixTransform *”转换为“osg::Node *”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换 |
|