opengl学习笔记(四)——绘制简单多边形

来源:互联网 发布:网络买卖存利弊下联 编辑:程序博客网 时间:2024/05/17 22:49

glBegin函数还提供了以下几个参数来画出凸多边形。所谓凸多边形,是指它要满足如下性质:把该多边形任意一边向两方无限延长成为一条直线后,其他各边均在此直线的同侧。

(1)GL_POLYGON,这个参数用后面的顶点列表画出一个凸多边形。

例子代码:

void display(void){glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POLYGON);glVertex2f(-0.5, -0.5); //点P1,左下角glVertex2f(-0.5, 0.5);  //点P2,左上角glVertex2f(0.5, 0.5);   //点P3,右上角            glVertex2f(0.5, -0.5); //点P4,右下角glEnd();glFlush(); }

运行效果如下图1所示:(红色文字为我所加,不是实际运行效果,下同)

                             图1 内部填充为白色的矩形

默认情况下,opengl在画多边形时,会自动用指定颜色(默认为白色)填充其内部。如果想只显示多边形的边线而不填充其内部,可以在glBegin函数之前加上一句

glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);    这个语句的作用告诉opengl只画出边框,但不填充内部。运行效果如下:

              图 2  矩形线框 

本节中后面的例子都设置为线框模式,不再赘述。

(2)GL_TRIANGLES ,将每3个顶点为一组画出一个三角形,如果剩余的顶点个数不足3个则忽略。运行效果如下所示:

(3)GL_TRIANGLES_STRIP 于GL_LINE_STRIP类似,画出顶点列表中所有由任意连续三点所组成的三角形。在本例里即依次画出三角形P1P2P3, P2P3P4 运行效果如下所示。

(4)GL_TRIANGLE_FAN

所有三角形都以第一点为顶点,另外两个顶点为连续顶点。即画出P1P2P3,P1P3P4。效果如下所示:

(5) GL_QUADS:每4个顶点为一组画出一个四边形。如果剩余点数不足4个,则忽略。

(6) GL_QUAD_STRIP:每两个顶点为一组,任意连续的两组画出一个四边形。如果有8个点为P1到P8,则最后画出3个4边形:

P1P2P3P4,

P3P4P5P6,

P5P6P7P8。

opengl还提供了一个直接画矩形的函数系列

glRect[sifd],中括号里的字符代表参数类型

s:short 短整型

i:integet 整型

f:float浮点型

d:double 双精度型。

例如下面的代码画出一个矩形框,左下角为(-0.5,-0.5),右上角为(0.5, 0.5)

void display(void){    glClear(GL_COLOR_BUFFER_BIT); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);    glRectf(-0.5f,-0.5f,0.5f,0.5f);glFlush(); }
效果和上面的图2类似。



原创粉丝点击