使用opengl程序绘制实线、虚线和点划线

使用opengl程序绘制实线、虚线和点划线
使用opengl程序绘制实线、虚线和点划线

GIS专业实验报告(计算机图形学)

实验5 使用opengl程序绘制实线、虚线和点划线。

姓名系别班级学号实验日期指导教师实验成绩

殷悦地信10.4班2010203482 2013.6.12 肖燕

一.实验目的及要求

使用opengl程序绘制实线、虚线和点划线。。

二.理论基础

1.显示列表:

显示列表是一组OpenGL函数调用,它被存储起来供以后执行。这样就可以将基本图素的OpenGL函数实现组织起来,指定名称,构成图段,所构成的图段可以再以后需要的地方显示出来。

创建显示列表方式如下:

glNewList(listID,listMode);

glutSoildCube(2.0);

……

glEndList();

2.显示列表的调用:

在显示列表创建之后,可以使用函数

Void glCallList(GLuint listID);

调用显示列表,其中参数listID是已定义的显示列表标识。

3.OpenGL划线函数:

glBegin(GL_LINES);

glVertex2i(坐标1x,坐标1y);

glVertex2i(坐标2x,坐标2y);

glEnd();

GL_LINES:直线模式

GL_LINE_STIPPLE:虚线模式

三.算法设计与分析

程序源码如下:

#include

#include

GLuint Line;

void Initial(void)

{

glClearColor(1.0f, 1.0f, 1.0f, 1.0f);

Line = glGenLists(1);

glNewList(Line, GL_COMPILE);

/************实线***************/

glColor3f(0.0, 1.0, 0.0);

glLineWidth(3);

glTranslatef(-20.0, 20.0, 0.0);

glBegin(GL_LINES); //实线

glVertex2i(-10,5);

glVertex2i(40,5);

glEnd();

/****************虚线*******************/

glColor3f(0.0, 0.0, 0.0);//更改颜色

glEnable(GL_LINE_STIPPLE); //声明线型为虚线;

glLineStipple (3, 0x0101); //设定线型

glLineWidth(2); //设定线宽

glBegin(GL_LINES);

glVertex2i(-20,-15);

glVertex2i(50,-15);

glEnd();

/**************点划线********************/

glColor3f(0.0, 0.0, 1.0);

glLineStipple (3, 0x0101); //设定线型

glLineWidth(5); //设定线宽,先画点

glBegin(GL_LINES);

glVertex2i(-20,-35);

glVertex2i(50,-35);

glEnd();

glLineStipple (6, 0x0606); //设定线型

glLineWidth(2); //设定线宽,再画线

glBegin(GL_LINES);

glVertex2i(-20,-35);

glVertex2i(50,-35);

glEnd();

glEndList();

}

void ChangeSize(int w, int h)

{

glViewport(0, 0, w, h);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluOrtho2D (-70.0f, 70.0f, -70.0f, 70.0f);

}

void Display(void)

{

glClear(GL_COLOR_BUFFER_BIT);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

glTranslatef(0.0, 0.0, 0.0);

glCallList(Line);

glFlush();

}

int main(int argc, char* argv[])

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

glutInitWindowSize(800,600);

glutInitWindowPosition(200,200);

glutCreateWindow("OpenGL直线、点画线、虚线——姓名:殷悦——学号:2010203482");

glutDisplayFunc(Display);

glutReshapeFunc(ChangeSize);

Initial();

glutMainLoop();

return 0;

}

四.程序调试及运行结果的自我分析与自我评价

代码中调用了画线函数的两个不同模式,绘制实线模式(GL_LINES)和绘制虚线模式(GL_LINE_STIPPLE)。点划线是由两条虚线拼合而成,通过设置不同的点距、线宽和样式实现。三种线条一次设置了红、绿、蓝三种颜色,由上而下平行排列。

运行结果见下图1。

图1 调试结果

五、实验心得及建议

通过这次自己动手作程序,加深了对以往所学知识的了解和应用。把老师讲的东西,通过自己的努力和探索并加以研究,变成自己所能理解的东西。在已经基本上掌握了VB基础,又加深了各项功能的认识理解。我会把这次作业当作起点,更加加深对VB软件的研究,为自己可以早日熟练掌握此软件的各项操作步骤而努力。

相关主题
相关文档
最新文档