转自:osg 基本几何图元

//osg 基本几何图元
// ogs中所有加入场景中的数据都会加入到一个Group类对象中,几何图元作为一个对象由osg::Geode类来组织管理。
// 绘制几何图元对象时,先创建一个Geometry对象,这个对象中要设置绘制所需的基本信息,图元的顶点、顶点颜色、顶点关联方式以及法线。 #include <osgViewer/Viewer>
#include <osgDB/ReadFile>
#include <osg/Node>
#include <osg/Geode>
#include <osg/Geometry> int main(int argc, char** argv)
{
osgViewer::Viewer view;
osg::ref_ptr<osg::Group> root = new osg::Group;
#pragma region 几何图元模块
osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry;
//定义顶点
osg::ref_ptr<osg::Vec3Array> vertexArray = new osg::Vec3Array;
geometry->setVertexArray(vertexArray);
vertexArray->push_back(osg::Vec3(-.f, .f, .f));
vertexArray->push_back(osg::Vec3(.f, .f, -.f));
vertexArray->push_back(osg::Vec3(.f, .f, .f));
//定义颜色数组
osg::ref_ptr<osg::Vec4Array> colorArray = new osg::Vec4Array();
geometry->setColorArray(colorArray);
geometry->setColorBinding(osg::Geometry::BIND_PER_VERTEX);
colorArray->push_back(osg::Vec4(.f, .f, .f, .f));
colorArray->push_back(osg::Vec4(.f, .f, .f, .f));
colorArray->push_back(osg::Vec4(.f, .f, .f, .f));
//定义法线
osg::ref_ptr<osg::Vec3Array> normalArray = new osg::Vec3Array();
geometry->setNormalArray(normalArray);
geometry->setNormalBinding(osg::Geometry::BIND_OVERALL);
normalArray->push_back(osg::Vec3(.f, -.f, .f));
//设置顶点关联方式
//PrimitiveSet类,这个类松散地封装了OpenGL的绘图基元,
//包括点(POINTS),线(LINES),多段线(LINE_STRIP),封闭线(LINE_LOOP),四边形(QUADS),多边形(POLYGON)等。
geometry->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::POLYGON, , ));
//几何组节点
osg::ref_ptr<osg::Geode> geo = new osg::Geode();
geo->addDrawable(geometry);
#pragma endregion
root->addChild(geo);
view.setSceneData(root);
//view.realize();
view.run();
}

osg::PrimitiveSet::POINTS对应OpenGL中的GL_POINTS绘制单独的点
osg::PrimitiveSet::LINES对应OpenGL中的GL_LINES绘制每两点连接的线
osg::PrimitiveSet::LINE_STRIP对应OpenGL中的GL_LINE_STRIP绘制依次连接各点的线
osg::PrimitiveSet::LINE_LOOP对应OpenGL中的GL_LINE_LOOP绘制依次连接各点的线,首尾相连
osg::PrimitiveSet::POLYGON对应OpenGL中的GL_POLYGON绘制依次连接各点的多边形
osg::PrimitiveSet::QUADS对应OpenGL中的GL_QUADS绘制依次连接每四点的四边形
如:1、2、3、4、5、6、7、8点 绘制结果1、2、3、4组成四边形,5、6、7、8组成四边形
osg::PrimitiveSet::QUAD_STRIP对应OpenGL中的GL_QUAD_STRIP绘制四边形
如:1、2、3、4、5、6、7、8点 绘制结果1、2、3、4组成四边形,3、4、5、6组成四边形、5、6、7、8组成四边形
osg::PrimitiveSet::TRIANGLES对应OpenGL中的GL_TRIANGLES绘制每三点连接的三角形
如:1、2、3、4、5、6点 绘制结果1、2、3组成三角形,4、5、6组成三角形
osg::PrimitiveSet::TRIANGLE_STRIP对应OpenGL中的GL_TRIANGLE_STRIP
如:1、2、3、4、5、6点 绘制结果1、2、3组成三角形,2、3、4组成三角形,3、4、5组成三角形4、5、6组成三角形
osg::PrimitiveSet::TRIANGLE_FAN对应OpenGL中的GL_TRIANGLE_FAN
如:1、2、3、4、5、6点 绘制结果1、2、3组成三角形,1、3、4组成三角形,1、4、5组成三角形,1、5、6组成三角形

最新文章

  1. asp.net mvc 上传文件
  2. ios项目中安装和使用CocoaPods
  3. Python 开发与测试 Webservice(SOAP)
  4. 聊天界面之气泡文本cell(二)使用Autolayout
  5. HADOOP NAMENODE对Image和edits的处理
  6. LINUX C++ 技术博客
  7. Angular 2.0 从0到1 (六)
  8. php中浮点数计算问题
  9. iOS 获取URL中的参数
  10. WPF自定义窗口(Windows Server 2012 Style)
  11. ubuntu下mysql的常用命令
  12. 五年26个版本:Linux系统内核全程回顾
  13. C#实现二分法查找算法
  14. Spark编译及spark开发环境搭建
  15. Java开源生鲜电商平台-团购模块设计与架构(源码可下载)
  16. (办公)SpringBoot与mybatisGenerator自动生成.
  17. maven私库nexus2.11.4迁移升级到nexus3.12.0
  18. jar 接收utf-8字符乱码现象
  19. C++11如何减少内存拷贝次数
  20. Oracle 11g服务器安装详细步骤——图文教程(系统 windows server 2012 R2)

热门文章

  1. VS2005工程迁移到Eclipse CDT
  2. js重写原型对象
  3. DEM渲染洼地淹没图(转)
  4. 修改UIBarButtonItem字体大小、颜色等相关属性
  5. C++第四章循环
  6. C语言中 指针和数组
  7. asp.net_MVC_jq三级联动
  8. R cannot be resolved to a variable 解决办法
  9. SQL Server高级内容之表表达式和复习
  10. ###STL学习--标准模板库