博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
osg 基本几何图元
阅读量:4322 次
发布时间:2019-06-06

本文共 2531 字,大约阅读时间需要 8 分钟。

转自:

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

转载于:https://www.cnblogs.com/yaoyu126/p/6214685.html

你可能感兴趣的文章
Linux IPC实践(3) --具名FIFO
查看>>
Qt之模拟时钟
查看>>
第一次接触安卓--记于2015.8.21
查看>>
(转)在分层架构下寻找java web漏洞
查看>>
mac下多线程实现处理
查看>>
C++ ifstream ofstream
查看>>
跟初学者学习IbatisNet第四篇
查看>>
seL4环境配置
查看>>
Git报错:insufficient permission for adding an object to repository database .git/objects
查看>>
ajax跨域,携带cookie
查看>>
BZOJ 1600: [Usaco2008 Oct]建造栅栏( dp )
查看>>
洛谷 CF937A Olympiad
查看>>
Codeforces Round #445 C. Petya and Catacombs【思维/题意】
查看>>
用MATLAB同时作多幅图
查看>>
python中map的排序以及取出map中取最大最小值
查看>>
ROR 第一章 从零到部署--第一个程序
查看>>
<form>标签
查看>>
vue去掉地址栏# 方法
查看>>
Lambda03 方法引用、类型判断、变量引用
查看>>
was集群下基于接口分布式架构和开发经验谈
查看>>