利用OPENGL中的函数来画长方体,然后根据模型的空间坐标来确定长方体的空间坐标。查资料可知,OpenGL中定义的定点放在函数glBegin和glEnd之间,由函数glBegin 的参
数指定绘制图元的类型,表1列出了glBegin 可支持的OpenGL图元。
表1 glBegin 可支持的OpenGL图元
模型 | 图元类型 |
GL_POINTS | 将指定的各定点用于创建单个的点。 |
GL_LINES | 将指定的顶点用于创建线段。没两个顶点指定一条单独的线段。如果顶点的个数是奇数,则忽略最后一个。 |
GL_LINE_STRIP | 将指定的顶点用于创建线条。第一个顶点之后的每个顶点指定的是线条延伸到的下一个点。 |
GL_LINE_LOOP | 特性和GL_LINE_STRIP相似,只不过最后一条线段是在指定的最后一个和第一个顶点之间绘制。典型情况下,这用于绘制哪些可能违反了GL_POLYGON用法规则的封闭区域。 |
GL_TRIANGLES | 将指定的顶点用于构造三角形。每三个顶点指定一个新三角形。如果顶点个数不是三的倍数,多余的顶点将被忽略。 |
GL_TRIANGLE_STRIP | 将指定的顶点用于创建三角条。指定前三个顶点之后,后继的每个顶点与它前面两个顶点一起用来构造下一个三角形。每个顶点三元组(在最初的组之后)会自动重新排列以确保三角形绕法的一致性。 |
GL_TRIANGLE_FAN | 将指定的顶点用于构造三角扇形。第一个顶点充当原点,第三个顶点之后的每个顶点与它的前一个顶点还有原点一起组合。 |
GL_QUADS | 每四个顶点用于构造一个四边形。如果顶点个数不是四的倍数,多余的顶点将被忽略。 |
GL_QUADS_STRIP | 将指定的顶点用于构造四条形边。在第一对顶点之后,每对顶点定义一个四边形。和GL_QUADS的顶点顺序不一样,每对顶点以指定顺序的逆序使用,以便保证绕法一致。 |
GL_POLYGON | 将指定的顶点用于构造一个凸多边形。多边形的边缘决不能相交。最后一个顶点会自动连接到第一个顶点以确保多边形是封闭的。 |
根据以上的模式,有很多方法可以画出长方体,我选择的是模式GL_LINE_LOOP和模式GL_LINES来画长方体。
在simpletest.c中添加画长方体的代码,如下:
static void drawCuboid()//add
{
glBegin(GL_LINE_LOOP);
glVertex3f(90.0f,60.0f,0.0f);
glVertex3f(-90.0f,60.0f,0.0f);
glVertex3f(-90.0f,60.0f,50.0f);
glVertex3f(90.0f,60.0f,50.0f);
glVertex3f(90.0f,-60.0f,50.0f);
glVertex3f(-90.0f,-60.0f,50.0f);
glVertex3f(-90.0f,-60.0f,0.0f);
glVertex3f(90.0f,-60.0f,0.0f);
glEnd();
glBegin(GL_LINES);
glVertex3f(90.0f,-60.0f,0.0f);
glVertex3f(90.0f,-60.0f,50.0f);
glVertex3f(-90.0f,-60.0f,0.0f);
glVertex3f(-90.0f,60.0f,0.0f);
glVertex3f(-90.0f,-60.0f,50.0f);
glVertex3f(-90.0f,60.0f,50.0f);
glVertex3f(90.0f,60.0f,0.0f);
glVertex3f(90.0f,60.0f,50.0f);
glEnd();
}
图1 在draw()中添加的代码
编译运行的结果如图2所示。
图2 默认线宽的运行结果
在OpenGL中画直线时,直线的线宽是默认值,也可用glLineWidth指定线宽:void glLineWidth(GLfloat width)。
设置线宽后的运行结果如图所示。
图3 线宽为2 图4 线宽为3 图5 线宽为4