osg-04-基本几何图元-线宽
1.简介
下面例举所有可绘制的几何图元:POINTS[点],LINES[线],LINE_STRIP[线带],LINE_LOOP[闭合线段],TRIANGLES[三
角形],TRIANGLE_STRIP[三角带],TRIANGLE_FAN[三角扇],QUADS[四方块],QUAD_STRIP[四方块带],POLYGON[多边
形],在这里我们要以封闭的直线为例来说明如何设置线宽属性。所有的图元可能都有它的特殊性,但是大 OpenSceneGraph 程序设计
www.osgChina.org 第四章:基本几何图元 76 都与此种设置方法类似。 在 OSG 中设置直线线宽的专门有一个函数来管理,叫做
LineWidth,它本身属于状态与属性类别中的类。事 实上也是从那里派生而来。所有设置状态的操作都与此类似。
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
#include <osg/Node>
#include <osg/Geode>
#include <osg/Geometry>
#include <osg/LineWidth>
#include <osgViewer/ViewerEventHandlers>osg::ref_ptr<osg::Node> CreateLine();int main()
{osgViewer::Viewer viewer;osg::Group* root = new osg::Group();root->addChild(CreateLine().get());viewer.setSceneData(root);// 窗口大小变化事件 Fviewer.addEventHandler(new osgViewer::WindowSizeHandler);viewer.realize();return viewer.run();
}osg::ref_ptr<osg::Node> CreateLine()
{osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry;osg::ref_ptr<osg::LineWidth> lineSize = new osg::LineWidth;lineSize->setWidth(10);geometry->getOrCreateStateSet()->setAttributeAndModes(lineSize.get(), osg::StateAttribute::ON);//首先定义四个点osg::ref_ptr<osg::Vec3Array> vertex = new osg::Vec3Array;geometry->setVertexArray(vertex.get());vertex->push_back(osg::Vec3(-1.f, 0.f, -1.f));vertex->push_back(osg::Vec3(1.f, 0.f, -1.f));vertex->push_back(osg::Vec3(1.f, 0.f, 1.f));vertex->push_back(osg::Vec3(-1.f, 0.f, 1.f));//定义颜色数组osg::ref_ptr<osg::Vec4Array> c = new osg::Vec4Array;geometry->setColorArray(c.get());geometry->setColorBinding(osg::Geometry::BIND_PER_VERTEX);c->push_back(osg::Vec4(1.f, 0.f, 0.f, 1.f));c->push_back(osg::Vec4(0.f, 1.f, 0.f, 1.f));c->push_back(osg::Vec4(0.f, 0.f, 1.f, 1.f));c->push_back(osg::Vec4(1.f, 1.f, 1.f, 1.f));//定义法线osg::ref_ptr<osg::Vec3Array> n = new osg::Vec3Array;geometry->setNormalArray(n.get());geometry->setNormalBinding(osg::Geometry::BIND_OVERALL);n->push_back(osg::Vec3(0.f, -1.f, 0.f));//设置顶点关联方式geometry->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINE_LOOP, 0, 4));//几何组结点osg::ref_ptr<osg::Geode> geode = new osg::Geode;geode->addDrawable(geometry.get());return geode.get();
}
2.运行结果
正面
背面
osg-04-基本几何图元-线宽相关推荐
- osg画线_osg 基本几何图元
//osg 基本几何图元//ogs中所有加入场景中的数据都会加入到一个Group类对象中,几何图元作为一个对象由osg::Geode类来组织管理.//绘制几何图元对象时,先创建一个Geometry对象 ...
- osg 基本几何图元
ogs中所有加入场景中的数据都会加入到一个Group类对象中,几何图元作为一个对象由osg::Geode类来组织管理.绘制几何图元对象时,先创建一个Geometry对象,这个对象中要设置绘制所需的基本 ...
- 使用基本几何图元在道路上实现准确高效的自定位
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 摘要(Abstract) 在非常有限的内存和计算能力的条件下实现准确定位是下一代汽车序列的一大挑战.本 ...
- Ogre procedural 几何图元库
概述: Ogre procedural 几何图元库是Ogre3D的基本图元库.使我们可以快速的创建几何图元,比如立方体, 球, 圆锥等. 几何图元包含: Box 盒子 RounderBox 弧形 ...
- IGES文件解析1——几何图元(更新中...)
IGES文件解析1--几何图元 文件格式 开始段 全局段 数据索引段DE 数据参数PD 结束段 几何图元 圆弧(100型) 复合曲线(102型) 圆锥曲线(104型) 大量数据(类型 106) 平面( ...
- OSG中的几何体绘制(一)
任何复杂的东西都是由一些简单部分组合构成的,对于OSG创建的场景和对象也同样如此,它们是由简单的图元(我们把构成3D对象的构件成为图元)按照一定的方式排列和组合而成的,OSG中的所有图元都是一维或二维 ...
- 【学习笔记】OSG 基本几何图元
例:geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4)); 来指定要利用这些数据生成一个怎么样的形状. ...
- OSG 绘制几何图元
文章目录 一.简介 二.相关类别 三.实现代码 3.1快速绘制(调试) 3.2标准方式 四.实现效果 参考资料 一.简介 在真正使用OSG绘制图形之前,我们可以先了解一下OpenGL是怎么绘制几何模型 ...
- osg几何体的图元的遍历
在osg的可绘制场景对象里,使用最广泛的是称为几何体的对象,也就是osg::Geometry,本文主要介绍如何使用osg提倡的方式来遍历和更新这一几何对象. 1. osg中的遍历方式 osg中广泛使用 ...
- 三维渲染引擎设计与实践(四)
五.绘制几何对象和文字 帧缓存(Frame Buffer)为用户与显示设备交互的一个接口,将显示的画面抽象成一块可以进行读写操作的内存区域. 帧缓存的每一个存储单元都对应显示屏上的一个像素.整个缓存空 ...
最新文章
- 解决Undefined function or method 'vgg_kmiter' for input arguments of type 'double'.
- lc171. Excel Sheet Column Number
- 《疯狂Java讲义》9
- Keras + Ubuntu环境搭建
- linux '$^t' 时间,Linux C时间函数 time_t struct tm
- ELK技术栈—Logstash—基础介绍
- 用于从文件读取/写入字符串的新JDK 11文件方法
- mysql group by cube_SQL Server 之 GROUP BY、GROUPING SETS、ROLLUP、CUBE
- 学python有前途吗-三十岁了,从零开始学python还有前途吗?
- Phpmyadmin的一次渗透测试
- 如何使用Teamtoken工具软件做员工股权激励
- 圣思园的随堂视频发布了
- Access denied for user ‘bijian0530‘@‘localhost‘ (using password: YES)
- win10时间不准_Win10实用技巧之win10系统电脑重置
- FineReport html5图表简介
- 一种基于深度学习的遥感图像分类及农田识别方法
- mysql 存储数据类型的选择
- 百度网盘限速下载,PanDownload简直逆天
- 最强偏振3D播放器TriDef 3D安装+全格式播放配置
- 增值税发票OCR识别扫描