设为首页 加入收藏

TOP

OpenGL开发 空间绘图:几何图元和缓冲区
2014-11-24 11:39:40 来源: 作者: 【 】 浏览:0
Tags:OpenGL 开发 空间 绘图 几何 元和 缓冲区

GL_POINTS //选择点作为图元


void glPointSize(GLfloat size); //函数接受1个参数,它用于指定被绘点的近似直径。但是,点的大小设置还是存在限制。


GLfloat sizes[2] //存储受支持的点大小范围


GLfloat step; //存储受支持的点大小增量



//获得受支持的点大小范围以及增量大小


glGetFloatv(GL_POINT_SIZE_RANGE,sizes);


glGetFloatv(GL_POINT_SIZE_GRANULARITY,&step);


这里,sizes数组将包含两个元素,分别表示glPointSize的最小有效值和最大有效值。另外,变量step表示点大小范围之内最小允许步进值。指定一个位于范围之外的值并不会产生错误,如果指定的值比最大有效值大,系统会取最大有效值;如果指定的值比最小有效值小,系统会取最小有效值。


glEnable/glDisable所启用或禁止的任何特性或功能,以及glSet所设置的任何数值设置,都可以用glGet函数的众多变形之一进行查询。


————————————————————————————


GL_LINES //选择直线作为图元


每两个指定的顶点用于绘制一条直线,如果为GL_LINES 指定奇数个顶点,最后一个顶点会被忽略。


GL_LINE_STRIP //选择线带作为图元


绘制一条经过所有这些顶点的连续的线。


GL_LINE_LOOP //选择线环作为图元


这种图元与GL_LINE_STRIP 非常相似,只是最后一个顶点和第一个顶点之间也会绘制一条直线。



void glLineWidth(GLfloat width); //函数接受1个参数,它用于指定被绘直线的近似宽度。但是,直线宽度的大小设置也存在限制。


GLfloat sizes[2] //存储受支持的直线宽度范围


GLfloat step; //存储受支持的直线宽度点大小增量



//获得受支持的直线宽度范围以及增量


glGetFloatv(GL_LINE_WIDTH_RANGE,sizes);


glGetFloatv(GL_LINE_WIDTH_GRANULARITY,&step);


这里,sizes数组将包含两个元素,分别表示glLineWidth的最小有效值和最大有效值。另外,变量step表示直线宽度范围之内最小允许步进值。指定一个位于范围之外的值并不会产生错误,如果指定的值比最大有效值大,系统会取最大有效值;如果指定的值比最小有效值小,系统会取最小有效值。



除了修改直线的宽度以外,我们还可以用点线或虚线模式来创建直线,这称为点画(stippling)。为了实现直线点画,首先必须利用下面这行代码启用点画功能:


glEnable(GL_LINE_STIPPLE);


然后,可以用glLineStipple函数创建这种模式:


void glLineStipple(GLint factor, GLushort pattern);


NOTE:glEnable函数所启用的任何特性或功能都可以用一个对应的glDisable调用来取消。


pattern参数是一个16位的值,它指定了一个模式,供绘直线所用。他的每个位都表示线段的一部分或者处于打开状态,或者处于关闭状态。在默认情况下,每个位对应一个像素,但factor参数可以作为乘法因子增加模式的宽度。


————————————————————————————


GL_TRIANGLES //三角形图元


顶点的指定次序以及方向的组合称为环绕(winding)。


在默认情况下,OpenGL认为逆时针方向环绕的一面是多边形的正面。如果想要改变OpenGL的这个默认行为,可以调用下面这个函数:


glFrontFace(GL_CW);


GL_CW参数告诉OpenGL顺时针环绕的多边形将被认为是正面的。为了把多边形的正面重新恢复为逆时针环绕,可以在这个函数中使用GL_CCW参数。



GL_TRIANGLE_STRIP //三角形带图元


可以绘制一串相连的三角形,从而节省大量的时间。


使用三角形带而不是分别指定每个三角形具有两个优点:


首先,用前三个顶点指定第一个三角形之后,对于接下来的每个三角形,只需要再指定一个顶点。需要绘制大量的三角形时,采用这种方法可以节省大量的程序代码和数据存储空间。第二个优点是运算性能的提供和带宽的节省。更少的顶点意味着数据从内存传输到图形卡的速度更快,并且顶点变换的次数也可以更少一些。


GL_TRIANGLE_FAN //三角形扇图元


创建一组围绕一个中心点的相连三角形。


用前三个顶点组成第一个三角形之后,后续的每个顶点(Vi)和原点(V0)以及前驱的那个顶点(Vi-1)形成了接下来的那个三角形。


————————————————————————————


glShadeModel(GL_FLAT);


告诉OpenGL用当前的颜色(也就是这个多边形的最后一个顶点的颜色)填充这个多边形。


glShadeMode(GL_SMOOTH);


告诉OpenGL根据每一个顶点的颜色对多边形就行渐变着色,对相邻的顶点的颜色进行匀和。



启动深度测试:


glEnable(GL_DEPTH_TEST);



启用或禁用背面消除:


glEnable(GL_CULL_FACE);


glDisable(GL_CULL_FACE);



多边形模式:


glPolygonMode(GL_BACK,GL_LINE);


glPolygonMode(GL_BACK,GL_FILL);


具体什么作用还不是很清楚,有待进一步研究。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Eclipse下搭建C/C++开发环境 下一篇OpenGL开发 几何变换:管线

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Linux_百度百科 (2025-12-26 12:51:52)
·Shell 流程控制 | 菜 (2025-12-26 12:51:49)
·TCP/UDP协议_百度百科 (2025-12-26 12:20:11)
·什么是TCP和UDP协议 (2025-12-26 12:20:09)
·TCP和UDP详解 (非常 (2025-12-26 12:20:06)