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

更新时间:2023-07-27 15:25:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

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

一.实验目的及要求

使用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 <windows.h>

#include <gl/glut.h>

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软件的研究,为自己可以早日熟练掌握此软件的各项操作步骤而努力。

本文来源:https://www.bwwdw.com/article/yqjm.html

Top