Artoolkit例子中的simpletest.c改写-----将显示的模型放在长方体内

 利用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();
}
然后draw()函数中用drawCuboid()函数画长方体,添加的代码如图1所示。

图1  在draw()中添加的代码

编译运行的结果如图2所示。


图2  默认线宽的运行结果

在OpenGL中画直线时,直线的线宽是默认值,也可用glLineWidth指定线宽:void glLineWidth(GLfloat width)。

设置线宽后的运行结果如图所示。

                                        

          图3  线宽为2                                                               图4  线宽为3                                                  图5   线宽为4



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值