在3D空间中绘制四边形
四边形 GL_QUADS
OpenGL的GL_QUADS图元用于绘制四边形,它根据每四个顶点绘制一个四边形。
注意,在使用四边形时,必需记住一个重要规则:一个四边形的四个角必须位于同一个平面中(不存在弯曲的四边形)。如图所示
四边形带 GL_QUAD_STRIP
该图元指定一个连接的四边形带。它们都保持相同方向的环绕。如图所示
通用多边形 GL_POLYGON
我们可以用它绘制任意数量的多边形。与四边形一样,多边形的所有顶点也必须位于同一平面中。如果想越过这个规则,可以采用一种变通的方法,使用GL_TRIANGLE_FAN代替GL_POLYGON。如图所示
多边形的创建规则:
1、 第一个规则是所有的多边形都必须是平面的。也就是说,多边形的所有顶点必须位于同一个平面中。在空间中,多边形不能扭曲或弯曲。
2、 第二个规则是多边形的边必须不相交,多边形必须是凸的。
注意,OpenGL施加这些限制的原因,是为了使用一些非常快速的算法对多边形进行渲染。
细分和边界
尽管OpenGL只能绘制凸多边形,但我们仍然能够创建非凸的多边形,那就是把两个或多个多边形排列在一起。我们使用OpenGL命令glPolygonMode可以把绘图模式切换到线框模式,这样就能看到组成较大表面区域的每一个较小的三角形。另外,我们还可以通过glEdgeFlag命令来通知OpenGL哪些线段属于边界线(围绕形状边缘的直线),哪些线段不属于边界线(形状内部的直线),这些形状内部的直线将不可见。下面的程序展示了glEdgeFlag函数的用法,当这个函数设置为true时,接下来所有的顶点都将作为多边形边界线的起点,反之则作为形状内部的直线。
/* 程序清单 3-11
* 2014/5/6
*/
#include <glut.h>
#include