标签:
glRect* (x1, y1, x2, y2);该矩形的一个角位于坐标位置(x1,y1)处,而与其相对的一角位于坐标位置(x2,y2)处。glRect的后缀码指出坐标数据类型及是否用数组元素来表示坐标。这些编码是i(整数)、s(短整数)、f(浮点数)、d(双倍长浮点数)和v(向量)。矩形的边平行于xy坐标轴。作为一个例子,下面的语句定义了图3.55中给出的正方形:
glRecti (200, 100,50, 250);如果将坐标值放在数组中,可用下列语句生成同样的正方形:
int vertex1 [] = { 200, 1000}; int vertex2 [] = { 50, 250}; glRectv (vertex1, vertex2);利用函数glRect生成矩形时,多边形的边按顶点序列(x1,y1)、(x2,y1)、(x2,y2)、(x1,y2)来形成,后返回到第一顶点(x1,yl)。在该例子中,我们生成了顺时针次序的顶点集。在许多二维应用中,前向面和后向面的确定是不重要的。但如果确实要将不同的特性赋给矩形的前向面和后向面,那就应该将本例中的两个顶点次序倒过来从而得到逆时针的顶点次序。第4章将讨论另一种可以颠倒前向
glBenin (GL_POLYGON); glVertex2iv (p1); glVertex2iv (p2); glVertex2iv (p3); glVertex2iv (p4); glVertex2iv (p5); glVertex2iv (p6); glEnd();一个多边形的顶点集至少包含三个顶点,否则什么也不显示。
glBenin (GL_TRIANGLES); glVertex2iv (p1); glVertex2iv (p2); glVertex2iv (p3); glVertex2iv (p4); glVertex2iv (p5); glVertex2iv (p6); glEnd();此时,前面三个坐标点定义一个三角形的顶点,后面三点定义下一个三角形,依次类推。对于每一个三角形填充区,我们指定逆时针次序的顶点位置。除非重复使用某些顶点,否则该图元常量仅显示不相连的三角形。如果顶点数小于3,则什么也不显示。而如果指定的顶点数不是3的倍数,则最后一个或两个顶点没有用。
glBenin (GL_TRIANGLE_STRIP); glVertex2iv (p1); glVertex2iv (p2); glVertex2iv (p6); glVertex2iv (p3); glVertex2iv (p5); glVertex2iv (p4); glEnd();假定在N个顶点的集合中没有重复的坐标位置,可获得N-2个三角形的带。很清楚,必须有N >= 3,否则什么也不显示。在该例子中,N=6,得到4个三角形。每一后继三角形共享前面定义的三角形的一条边,因此顶点次序的设定必须保证显示的一致性。一个三角形在前面两个顶点的基础上再加一个顶点来定义。因此,最前面三个顶点必须按从前面(外部)观察三角形表面时的逆时针次序列出。随后,顶点表中用于另外三个三角形的三个顶点安排成顺时针次序。这通过按次序n=1,n=2....n = N-2处理顶点集中的位置n,并按n是否为奇数或偶数确定相应的三顶点集次序来实现。如果n是奇数,三角形顶点的多边形列表次序是n 、n+1、 n+2。如果n是偶数,则三角形顶点次序为。n+l、n、n+2。在前面的例子中,第一个三角形(n=1)的顶点次序为(p1, p2, p6)。第二个三角形(n = 2)的顶点次序为(p6, p2, p3)。第三个三角形(n=3)为(p6, p3, p5)。多边形表中第四个三角形(n=4)的顶点次序为(p5, p3, p4)。
glBenin (GL_TRIANGLE_FAN); glVertex2iv (p1); glVertex2iv (p2); glVertex2iv (p3); glVertex2iv (p4); glVertex2iv (p5); glVertex2iv (p6); glEnd();
N个顶点可获得N-2个三角形,不需要重复使用任何顶点,但必须至少列出三个顶点。另外,必须合适地描述顶点次序,以便正确定义每一个三角形的前向面和后向面。第一个列出的顶点(此时为pl )是扇形中每一三角形共享的顶点。如果再按n=1,n=2,...,n=N-2来计算多边形和坐标位置,则多边形表中第n个三角形的顶点次序为1, n+1 , n+2。因此,三角形1由顶点集(p1,p2,p3)定义;三角形2的顶点次序为(p1, p3, p4);三角形3的顶点次序为(p1,p4,p5);而三角形4的顶点集为(p1,p5,p6)。
计算机图形学(二)输出图元_10_多边形填充区_7_OpenGL多边形填充区函数(上)
标签:
原文地址:http://blog.csdn.net/heyuchang666/article/details/51471289