osg/opengl 图元几何单元

1. glVertex:指定顶点
C语言描述
glVertex2d(GLdouble x, GLdouble y);
 glVertex2f(GLfloat x, GLfloat y);
 glVertex2i(GLint x, GLint y);
 glVertex2s(GLshort x, GLshort y);
glVertex3d(GLdouble x, GLdouble y, GLdouble z);
 glVertex3f(GLfloat x, GLfloat y, GLfloat z);
 glVertex3i(GLint x, GLint y, GLint z);
glVertex3s(GLshort x, GLshort y, GLshort z);
glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
 glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
 glVertex4i(GLint x, GLint y, GLint z, GLint w);
glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w);
glVertex2dv(const GLdouble *v);
 glVertex2fv(const GLfloat *v);
 glVertex2iv(const GLint *v);
 glVertex2sv(const GLshort *v);
glVertex3dv(const GLdouble *v);
 glVertex3fv(const GLfloat *v);
 glVertex3iv(const GLint *v);
glVertex3sv(const GLshort *v);
glVertex4dv(const GLdouble *v);
 glVertex4fv(const GLfloat *v);
 glVertex4iv(const GLint *v);
glVertex4sv(const GLshort *v);
参数
x,y,z  顶点的x,y,z坐标,不指定z时,默认值为0.0。
w  顶点的w坐标,该坐标用于缩放,默认情况下设置为1.0。
*v  一个数值数组,它保存着2个,3个或4个用于指定顶点的值。
说明
glVertex函数使用在glBegin/glEnd语句之间,用来指定点、线和多边形的顶点。当调用glVertex函数指定顶点时,可以为该顶点指定相关的数据,即顶点的当前颜色、法向量和纹理坐标。

2. glBegin,glEnd:限定一个或多个图元顶点的绘制
C语言描述
void glBegin(GLenum mode);
void glEnd(void);
参数
mode 指定在glBegin和glEnd之间将要用顶点创建的一个或多个图元,可以有以下10个供选择的常数:GL_POINTS、GL_LINES、GL_LINE_STRIP、GL_LINE_LOOP、GL_TRIANGLES、GL_TRIANGLE_STRIP、GL_TRIANGLE_FAN、GL_QUADS、GL_QUAD_STRIP、GL_POLYGON。
说明
   glBegin和glEnd函数限定了一组或多组图元的顶点定义。glBegin函数的变量mode指定了顶点可以绘制的10种方式。以n作为以1开始的整数,N作为指定的全部顶点数,则各种绘制方式如下:
 GL_POINTS:把每一个顶点作为一个点进行处理,顶点n即定义了点n,共绘制N个点。
GL_LINES:把每一个顶点作为一个独立的线段,顶点2n-1和2n之间共定义了n个线段,总共绘制N/2条线段。,如果N为奇数,则忽略最后一个顶点。
GL_LINE_STRIP:绘制从第一个顶点到最后一个顶点依次相连的一组线段,第n和n+1个顶点定义了线段n,总共绘制N-1条线段。
GL_LINE_LOOP:绘制从定义第一个顶点到最后一个顶点依次相连的一组线段,然后最后一个顶点与第一个顶点相连。第n和n+1个顶点定义了线段n,然后最后一个线段是由顶点N和1之间定义,总共绘制N条线段。
GL_TRIANGLES:把每三个顶点作为一个独立的三角形。顶点3n-2,3n-1和3n定义了第n个三角形,总共绘制N/3个三角形。
GL_TRIANGLE_STRIP:绘制一组相连的三角形。对于奇数点n,顶点n,n+1和n+2定义了第n个三角形;对于偶数n,顶点n+1,n和n+2定义了第n个三角形,总共绘制N-2个三角形。
GL_TRIANGLE_FAN:绘制一组相连的三角形。三角形是由第一个顶点及其后给定的顶点所确定。顶点1,n+1和n+2定义了第n个三角形,总共绘制N-2个三角形。
GL_QUADS:绘制由4个顶点组成的一组单独的四边形。顶点4n-3,4n-2,4n-1和4n定义了第n个四边形,总共绘制N/4个四边形。
GL_QUAD_STRIP:绘制一组相连的四边形。每个四边形是由一对顶点及其后给定的一对顶点共同确定的。顶点2n-1,2n,2n+2和2n+1定义了第n个四边形,总共绘制N/2-1个四边形。
GL_POLYGON:绘制一个凸多边形,顶点1到N定义了这个多边形。
可以在glBegin和glEnd之间调用的OpenGL函数为:glVertex,glColor,glIndex,glNormal,glTexCoord,glCoord,glPoint,glMaterial和glEdgeFlag。

3. glEdgeFlag,glEdgeFlagv:指定边界标记
C语言描述
void glEdgeFlag(GLboolean flag);
 void glEdgeFlagv(const GLboolean *flag);
参数
   flag  指定当前的边界标记值,为GL_TRUE或GL_FALSE。
   *flag  指向包含单个布尔元素的数组指针,该布尔元素表示当前的边界标记值。
说明
在glBegin/glEnd之间指定的多边形、单个的三角形或单个的四边形上每个顶点的边界标志,该顶点或者是边界标志或者不是边界标志。指定顶点时,如果当前边界标记为GL_TRUE,那么该顶点标记为边界的起点,否则为非边界标记的起点。注意只有在GL_POLYGON_MODE设置为GL_POINT或GL_LINE时,边界标记和非边界标记才有意义。初始时,边界标记为GL_TREU。

4. glPointSize:指定光栅化点的直径
C语言描述
    void glPointSize(GLfloat size);
参数
   size  指定光栅化点的直径,缺省值为1.0。
说明
本函数指定走样和反走样的点的光栅化的直径。如果size变量取非1.0的值,那么激活和未激活反走样的情况下,点的大小在屏幕上显示不同的结果。可以调用glEnable和glDisable函数,变量为GL_POINT_SMOOTH控制点的反走样。
如果关闭反走样,点的实际大小是通过将指定的数值四舍五入为整数来决定。如果激活反走样,那么点光栅化为每个像素正方形产生一个片元,该正方形的直径等于当前点的大小,中心位于点(xw,yw)(下标w表示窗口坐标)的圆形区域相交,对于每个片元,覆盖值是圆形区域与对应的像素正方形相交的窗口坐标区域,这个覆盖值将被保存起来并使用在最后的光栅化步骤中。
注意,当激活点反走样时,点的大小并不是任意的,它有一定的范围,可以用glGet函数,变量为GL_POINT_SIZE_RANGE查询出,如果设定的值超出这个范围,那么将会使用该范围内最接近设定值的值。

5. glLineWidth:指定光栅化直线的宽度
C语言描述
    void glLineWidth(GLfloat width);
参数
width 指定光栅化直线的宽度,缺省值为1.0。
说明
本函数指定被光栅化的走样和反走样直线的宽度。在激活和未激活反走样的情况下,不同的线宽具有不同的效果。可以调用glEnable和glDisable函数,变量为GL_LINE_SMOOTH控制直线的反走样。
如果关闭直线反走样,实际的线宽是通过将指定的数值四舍五入为整数来决定。如果激活反走样,直线光栅化操作为每个像素正方形产生一个片元,这个正方形与位于矩形内的区域相互交叉,该矩形的宽度等于当前的线宽,长度等于线的实际长度,并且位于线段的中心。对于每个片元,覆盖值是相邻像素正方形的矩形区域交叉的窗口坐标区域,这个覆盖值将被保存起来并使用在最后的光栅化操作中。
   注意,当激活直线反走样时,直线的宽度并不是任意的,它有一定的范围,可以用glGet函数,变量为GL_LINE_WIDTH_RANGE查询出,如果设定的值超出这个范围,那么将会使用该范围内最接近设定值的值。

6. glLineStipple:指定点划线
C语言描述
    void glLineStipple(GLint factor, GLushort pattern)
参数
factor 指定线的点划图中每个位的倍数。例如,如果factor为3,那么点划图中的每个位是设置值的3倍。factor的取值范围为[0,255],缺省值为0。
pattern 指定一个16位整数,当线被光栅化时,这16位确定了线中的哪一段需要绘制,缺省时点划图中的每个位均为1。
说明
本函数使用位模式来绘制点划线。位模式从第0位(最右边的位)开始,所以实际的绘图模式是指定模式的逆序。factor参数用于展宽模式中每一位在点划线中指定要画或不要画的像素数。为了使用点划线,必须先启用点划线,调用glEnable(GL_LINE_STIPPLE)。如果正在绘制多条线段,每次画新线段时模式将被复位,这样在绘制一条线段在模式的中间终止将不会影响下一条线段。

7. glPolygonMode:选择多边形光栅化模式
C语言描述
   void  glPolygonMode(GLenum face, GLenum mode);
参数
face 指定多边形的哪一个面受模式改变的影响——GL_FRONT,GL_BACK或GL_FRONT_AND_BACK。
mode 指定新的绘图模式。GL_FILL为默认值,生成填充的多边形;GL_LINE生成多边形的轮廓;GL_POINT只画出顶点。GL_LINE和GL_POINT绘制的点和直线受glEdgeFlag所设置的边缘标记的影响。
说明
本函数允许改变多边形的渲染方式。默认情况下,用当前颜色或材质属性给多边形进行填充或加上阴影。

8. glFrontFace:定义正面多边形和反面多边形。
C语言描述
    void glFrontFace(GLenum mode);
参数
   mode  指定正对多边形的方向——顺时针(GL_CW)或逆时针(GL_CCW)。
说明
本函数用于定义多边形的哪一面被视为正面。如果从正面看时,多边形顶点的指定顺序是按顺时针方向绕多边形一周,则说这个多边形具有顺时针绕法;反之,顶点是按逆时针方向绕多边形一周,则说这个多边形具有逆时针绕法。通过本函数可以把顺时针或逆时针绕法的一面指定为多边形的正面。

9. glCullFace:指定剔出操作的多边形面
C语言描述
    void glCullFace(GLenum mode);
参数
   mode  指定应剔除多边形的哪一个面,不是GL_FRONT就是GL_BACK。
说明
本函数可以禁用多边形正面或背面上的光照、阴影和颜色计算及操作,消除不必要的渲染计算是因为无论对象如何进行旋转或变换,都不会看到多边形的背面。用GL_CULL_FACE参数调用glEnable和glDisable可以启用或禁用剔除。

10. glRect:绘制矩形
C语言描述
void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
    void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
    void glRecti(GLint x1, GLint y1, GLint x2, GLint y2);
    void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2);
void glRectdv(const GLdouble *v1, const GLdouble *v2);
    void glRectfv(const GLfloat *v1, const GLfloat *v2);
    void glRectiv(const GLint *v1, const GLint *v2);
    void glRectsv(const GLshort *v1, const GLshort *v2);
参数
x1,y1  指定矩形的左上角点。
   x2,y2  指定矩形的右下角点。
    *v1 两个值的数组,指定矩形的左上角点。
    *v2 两个值的数组,指定矩形的右下角点。
说明
   本函数根据指定的两个顶点坐标绘制矩形。矩形位于z=0的xy平面上。

分享:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙行天下01

你的鼓励将是我的最大写作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值