本文共 5470 字,大约阅读时间需要 18 分钟。
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平面上。 转载地址:http://bjzli.baihongyu.com/