使用opengl程序绘制实线、虚线和点划线使用opengl程序绘制实线、虚线和点划线
GIS专业实验报告(计算机图形学)
实验5 使用opengl程序绘制实线、虚线和点划线。
姓名 系别班级 学号 实验日期 指导教师 实验成绩
一(实验目的及要求
使用opengl程序绘制实线、虚线和点划线。。
二( 理论基础
1. 显示列表:
显示列表是一组OpenGL函数调用,它被存储起来供以后执行。这样就可以将基本图素的OpenGL函数实现
组织起来,指定名称,构成图段,所构成的图段可以再以后需要的地方显示出来。
创建显示列表方式如下:
glNewList(l...
使用opengl程序绘制实线、虚线和点划线
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
#include
GLuint Line;
void Initial(void)
{
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
Line = glGenLists(1);
glNewList(Line, GL_COMPILE);
glTranslatef(-50.0, 20.0, 0.0);
glColor3f(255.0, 0.0, 0.0); //实线;
glLineWidth(2);
glBegin(GL_LINES);
glVertex2i(0,0);
glVertex2i(100,0);
glEnd();
/***************实线***************/
glColor3f(255.0, 0.0, 0.0); //虚线;
glEnable(GL_LINE_STIPPLE);
glLineStipple (2, 0x4444);
glLineWidth(2);
glBegin(GL_LINES);
glVertex2i(0,-20);
glVertex2i(100,-20);
glEnd();
/***************虚线***************/
glColor3f(255.0, 0.0, 0.0); //点划线;
glEnable(GL_LINE_STIPPLE);
glLineStipple (2, 0xffcc);
glLineWidth(2);
glBegin(GL_LINES);
glVertex2i(0,-40);
glVertex2i(100,-40);
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(600,450);
glutInitWindowPosition(100,100);
glutCreateWindow("OpenGL直线、虚线、点划线");
glutDisplayFunc(Display);
glutReshapeFunc(ChangeSize);
Initial();
glutMainLoop();
return 0;
}
四.程序调试及运行结果的自我分析与自我评价
代码中调用了画线函数的两个不同模式,绘制实线模式(GL_LINES)和绘制虚线模式(GL_LINE_STIPPLE)。点划线是由两条虚线拼合而成,通过设置不同的点距、线宽和样式实现。三种线条一次设置了红、绿、蓝三种颜色,由上而下平行排列。
运行结果见下图1。
图1 调试结果
四( 实验心得及建议
本文档为【使用opengl程序绘制实线、虚线和点划线】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。