OSG 基本几何图元

例:geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4));

来指定要利用这些数据生成一个怎么样的形状。

该行代码中,使用DrawArrays类向Geometry类送入了新几何体的信息,即,该几何体是一个QUADS,它的顶点坐标从索引数组中读入,从第1个索引值开始,共读入4个索引值,组成一个四边形图形。

几何体的形状参数除了QUADS之外,还有数种方式,以用于不同的用户需求,列表如下:


POINTS


绘制点


绘制用户指定的所有顶点。


LINES


绘制直线


直线的起点、终点由数组中先后相邻的两个点决定;用户提供的点不止两个时,将尝试继续绘制新的直线。


LINE_STRIP


绘制多段直线


多段直线的第一段由数组中的前两个点决定;其余段的起点位置为上一段的终点坐标,而终点位置由数组中随后的点决定。


LINE_LOOP


绘制封闭直线


绘图方式与多段直线相同,但是最后将自动封闭该直线。


TRIANGLES


绘制三角形


三角形的三个顶点由数组中相邻的三个点决定,并按照逆时针的顺序进行绘制;用户提供的点不止三个时,将尝试继续绘制新的三角形。


TRIANGLE_STRIP


绘制多段三角形


第一段三角形的由数组中的前三个点决定;其余段三角形的绘制,起始边由上一段三角形的后两个点决定,第三点由数组中随后的一点决定。


TRIANGLE_FAN


绘制三角扇面


第一段三角形的由数组中的前三个点决定;其余段三角形的绘制,起始边由整个数组的第一点和上一段三角形的最后一个点决定,第三点由数组中随后的一点决定。


QUADS


绘制四边形


四边形的四个顶点由数组中相邻的四个点决定,并按照逆时针的顺序进行绘制;用户提供的点不止四个时,将尝试继续绘制新的四边形。


QUAD_STRIP


绘制多段四边形


第一段四边形的起始边由数组中的前两个点决定,边的矢量方向由这两点的延伸方向决定;起始边的对边由其后的两个点决定,如果起始边和对边的矢量方向不同,那么四边形将会扭曲;其余段四边形的绘制,起始边由上一段决定,其对边由随后的两点及其延伸方向决定。


POLYGON


绘制任意多边形


根据用户提供的顶点的数量,绘制多边形。

和opengl对比:

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组成三角形

时间: 2024-11-02 16:35:26

OSG 基本几何图元的相关文章

几何图元

[几何图元] 1.圆的参数坐标. x(t) = cos 2*PI*t y(t) = cos 2*PI*t 2.圆的周长:2*PI*r.圆的面积:PI*r^2. 球的表面积:4*PI*r^2.球的体积:4/3*PI*r^3. 3.AABB的表示方法: 1)2点式.Pmin.Pmax. 2)尺寸向量.Pmax - Pmin. 3)中心点式.C-r. 4.将一个点加入到AABB,只需用该点的坐标分别更新X,Y,Z的最大最小值.根据点集建立AABB就是不断地将点依照此法加入AABB的过程. 5.

opengl使用现在比较常用的方法来绘制简单几何图元

上一篇文章中也使用了比较老的方法glBegin 和 glEnd的方法来绘制了简单的集合图元,现在使用比较新的而且更高效的方法来绘制简单的集合图元. 这种方法与以前方法的不同点在对数据的处理上,glBegin 和 glEnd是要给出数据,然后直接来进行绘制,然而新的方法是现将数据保存到显存中,然后直接一个绘制命令,就可以直接从显卡内存中直接读取数据进行绘制,效率更高而且更方便. #include <GL/glew.h> #include <GL/freeglut.h> #includ

openGl超级宝典学习笔记 (2) 7个基本的几何图元

点(GL_POINTS): 点总是正方形的像素,默认情况下,点的大小不受透视除法影响.即不管与视点的距离如何,它的大小都不改变.为了获得圆点,必须在抗锯齿模式下绘制点. 可以用glPointSize改变点的大小. //点 //建立批次 GLBatch pointBatch; GLfloat vCoast[24][3] = {{2.80, 1.20, 0.0 }, {2.0, 1.20, 0.0 }, {2.0, 1.08, 0.0 }, {2.0, 1.08, 0.0 }, {0.0, 0.80

openGl超级宝典学习笔记 (2) 7个主要的几何图元

点(GL_POINTS): 点总是正方形的像素,默认情况下,点的大小不受透视除法影响. 即无论与视点的距离怎样,它的大小都不改变.为了获得圆点.必须在抗锯齿模式下绘制点. 能够用glPointSize改变点的大小. //点 //建立批次 GLBatch pointBatch; GLfloat vCoast[24][3] = {{2.80, 1.20, 0.0 }, {2.0, 1.20, 0.0 }, {2.0, 1.08, 0.0 }, {2.0, 1.08, 0.0 }, {0.0, 0.8

OSG 3.0 三维视景仿真技术开发详解

第一章 OSG三维渲染引擎概述 OSG的主要功能包括以下几个方面: 1. 可以实时高效地绘制和控制使用建模软件所建立的3D模型, 如3DMAX.MAYA.Creator等制作的3D模型, 该功能是场景渲染的基本功能. 2. 支持多种外设, 如操作杆.游戏柄.轨迹球.方向盘.键盘鼠标等. 3. 除了传统的二维屏幕上进行三维展示外, OSG还可以完成红绿偏移的立体投影, 实现真正的立体展示. 4. 支持骨骼动画.关键帧动画.颜色动画等各种流行的动画. OSG的相关扩展: OSG的相关扩展,OSG针对

OSG开发概览(转载)

OSG开发概览 1 OSG基础知识 Ø OSG是Open Scene Graphic 的缩写,OSG于1997年诞生于以为滑翔机爱好者之手,Don burns  为了对滑翔机的飞行进行模拟,对openGL的库进行了封装,osg的雏形就这样诞生了,1998年Don burns 遇到了同样喜欢滑翔机和计算机图形学的Robert Osfield ,从此Robert Osfield加入了osg小组的开发并一直担任开发小组的组长. Ø OSG不但有openGL的跨平台的特性和较高的渲染性能,还提供了一系列

OSG绘制空间凹多边形并计算其面积

目录 1. 思路 1) 多边形分格化 2) 几何图元遍历 2. 实现 3. 参考 1. 思路 这个问题其实涉及到OSG中的两个问题:多边形分格化和几何图元遍历. 1) 多边形分格化 在OpenGL/OSG中,由于效率的原因,默认是直接显示的简单的凸多边形.如果直接强行显示凹多边形,渲染结果是不确定的.所以对于复杂的凹多边形,需要将其分解成简单的凸多边形,这个过程就是多边形分格化.在OSG中是通过osgUtil::Tessellator类来实现多边形分格化的. 2) 几何图元遍历 对于二维的凹多边

第二章 状态管理和绘制几何物体 总结

目标 1. 清除窗口 2.强制完成所有尚未执行的绘图操作 3.在2d或3d空间绘制图元 4.打开.关闭.查询状态 5.控制图元显示 6.在实心物体表面适当位置指定法线向量 7.用顶点数组和缓冲区对象存储和访问几何数据. 8.同时保存和恢复几个状态变量. 1.1 3种基本操作:清除窗口.绘制几何图形.绘制光栅对象. 2. 绘图工具箱: 2.1 清除RGBA模式的窗口 glClearColor(R, G, B, A); //将当前清除颜色设置成为一个状态变量 glClearDepth(1.0); /

openGl学习之基本图元

从本篇開始,会给出一些代码实例,所以要配置好编译环境. 环境配置: vs2012下配置链接http://www.cnblogs.com/dreampursuer/archive/2014/05/27/3754528.html vc++6.0下配置链接http://blog.csdn.net/hbuxiaoshe/article/details/5047564 在给出详细的画图代码之前,先解说一下创建一个openGl程序窗体的初始化,在上一篇文章里已经介绍了,这里再贴一遍. void displa