《使用opengl程序绘制实线、虚线和点划线(共3页).doc》由会员分享,可在线阅读,更多相关《使用opengl程序绘制实线、虚线和点划线(共3页).doc(3页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上GIS专业实验报告(计算机图形学)实验5 使用opengl程序绘制实线、虚线和点划线。姓名系别班级学号实验日期指导教师实验成绩一 实验目的及要求使用opengl程序绘制实线、虚线和点划线。二 理论基础1. 显示列表:显示列表是一组OpenGL函数调用,它被存储起来供以后执行。这样就可以将基本图素的OpenGL函数实现组织起来,指定名称,构成图段,所构成的图段可以再以后需要的地方显示出来。创建显示列表方式如下:glNewList(listID,listMode);glutSoildCube(2.0);glEndList();2. 显示列表的调用:在显示列表创建之后,可以
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 = glGenLis
3、ts(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_
4、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
5、, 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);glut
6、InitDisplayMode(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 调试结果四 实验心得及建议专心-专注-专业