osg三角带绘制
来源:互联网 发布:mysql desc 命令 编辑:程序博客网 时间:2024/04/28 15:41
#include <osgViewer/Viewer>#include <osgViewer/ViewerEventHandlers>#include <osg/Node>#include <osg/Group>#include <osgDB/ReadFile>#include <osgDB/WriteFile>#include <osgGA/StateSetManipulator>#include <osgUtil/Optimizer>#include <osgUtil/TriStripVisitor>osg::ref_ptr<osg::Geometry> 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)) ; return geom.get() ;}int main(){ osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer() ; // 方便查看在多边形之间切换,以查看三角网 viewer->addEventHandler(new osgGA::StateSetManipulator(viewer->getCamera()->getOrCreateStateSet())) ; osg::ref_ptr<osg::Group> root = new osg::Group() ; //创建一个几何体对象 osg::ref_ptr<osg::Geometry> geometry = createQuad() ; //对几何体进行条带化 osgUtil::TriStripVisitor stripper ; stripper.stripify(*(geometry.get())) ; // 添加到叶节点 osg::ref_ptr<osg::Geode> geode = new osg::Geode() ; geode->addDrawable(geometry.get()) ; //添加到场景 root->addChild(geode.get()) ; osgUtil::Optimizer optimizer ; optimizer.optimize(root.get()) ; viewer->setSceneData(root.get()) ; viewer->realize() ; viewer->run() ; return 0 ;}
0 0
- osg三角带绘制
- 【笔记】css绘制带三角的气泡
- [iOS 带三角弹出框的绘制]
- OSG::绘制
- osg 骨骼绘制 注意事项
- OSG环境下,使用glsl的几何着色器,绘制带纹理的三角形
- 绘制上下对三角
- opengl 三角纹理绘制
- 三角网绘制续
- CSS绘制三角型
- css--京东小三角绘制
- OSG可绘制体Drawable
- osg入门系列14-狄落泥三角网
- OSG 自带事件响应
- OSG 自带examples简介
- osg mingw 编译 带版本号
- [OSG]源码分析:osg::Drawable可绘制对象
- 利用border绘制小三角
- androidSwipeLayout简单用法,仿qq会话列表listview左右滑动
- java外部类与内部类的关系
- 【Day47】有关数据库的知识点总结
- Android官方开发文档Training系列课程中文版:Activity测试之创建单元测试
- 默认浏览器打开指定Url
- osg三角带绘制
- Fibonacci数列 知识点梳理
- define和typedef
- ubuntu server换源
- 莫名其妙的错误
- python中 __len__
- C#第三章示例6
- 配置ssh无密码登录
- B001-Atmega16-SPI Flash