OpenSceneGraph三维渲染引擎编程指南第四章第一个例子
2016-10-19 17:44
141 查看
OpenSceneGraph三维渲染引擎编程指南.肖鹏等.2010.1. 第四章的第一个例子
#include <osgViewer/Viewer> #include <osg/Node> #include <osg/Geode> #include <osg/Group> #include <osgDB/ReadFile> #include <osgDB/WriteFile> #include <osgUtil/Optimizer> osg::ref_ptr<osg::Node> createQuad() { osg::ref_ptr<osg::Geode> geode = new osg::Geode(); osg::ref_ptr<osg::Geometry> geom = new osg::Geometry(); osg::ref_ptr<osg::Vec3Array> v = new osg::Vec3Array(); v->push_back(osg::Vec3(0.0f, 0.0f, 0.0f)); v->push_back(osg::Vec3(1.0f, 0.0f, 0.0f)); v->push_back(osg::Vec3(1.0f, 0.0f, 1.0f)); v->push_back(osg::Vec3(0.0f, 0.0f, 1.0f)); geom->setVertexArray(v.get()); osg::ref_ptr<osg::Vec2Array> vt = new osg::Vec2Array(); vt->push_back(osg::Vec2(0.0f, 0.0f)); vt->push_back(osg::Vec2(1.0f, 0.0f)); vt->push_back(osg::Vec2(1.0f, 1.0f)); vt->push_back(osg::Vec2(0.0f, 1.0f)); geom->setTexCoordArray(0, vt.get()); //创建颜色数组 osg::ref_ptr<osg::Vec4Array> vc = new osg::Vec4Array(); vc->push_back(osg::Vec4(1.0f, 0.0f, 0.0f, 1.0f)); vc->push_back(osg::Vec4(0.0f, 1.0f, 0.0f, 1.0f)); vc->push_back(osg::Vec4(0.0f, 0.0f, 1.0f, 1.0f)); vc->push_back(osg::Vec4(1.0f, 1.0f, 0.0f, 1.0f)); geom->setColorArray(vc.get()); geom->setColorBinding(osg::Geometry::BIND_PER_VERTEX); osg::ref_ptr<osg::Vec3Array> nc = new osg::Vec3Array(); nc->push_back(osg::Vec3(0.0f, -1.0f, 0.0f)); //设置法线数组 geom->setNormalArray(nc.get()); geom->setNormalBinding(osg::Geometry::BIND_OVERALL); geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS, 0, 4)); geode->addDrawable(geom.get()); return geode.get(); } int main() { //创建Viewer对象,场景浏览器 osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer(); osg::ref_ptr<osg::Group> root = new osg::Group(); //添加到场景 root->addChild(createQuad()); //优化场景数据 osgUtil::Optimizer optimizer; optimizer.optimize(root.get()); // set the scene to render viewer->setSceneData(root.get()); viewer->realize(); viewer->run(); return 0; }
相关文章推荐
- Windows 游戏编程大师技巧第四章第一个例子
- 编译unix环境高级编程第一个例子出错解决
- Spring第一个例子的补充
- Selenium第一个例子
- ibatis 学习笔记 包括第一个例子
- Autofac 解释第一个例子 《第一篇》
- 第一个hibernate例子
- IromPython .Net 的简介和第一个例子
- Python之下载安装以及第一个例子
- RequireJS入门一之实现第一个例子
- OpengGL第八版的第一个例子
- Windows 游戏编程大师技巧第四章第9个例子
- Caffe第一个例子
- Opengl第一个小例子
- 创建OGRE的第一个例子
- 一、第一个Struts2例子(Helloword)
- 菜鸟学习Spring——第一个例子
- jQuery 第一个例子
- Ruby on rails开发从头来(windows)(四)-第一个添删查改例子 (修正原版错误)
- Hibernate入门学习(3)----第一个Hibernate例子