网站大量收购闲置独家精品文档,联系QQ:2885784924

OpenGL-实验2直线生成算法实现.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验 2 直线生成算法实现 1. 实验目的 理解基本图形元素光栅化的基本原理, 掌握一种基本图形元素光栅化算法, 利用 0penGL 实现直线光栅化的 DDA 算法。 2. 实验内容 (1)根据所给的直线光栅化的示范源程序 , 在计算机上编译运行 , 输出正确结果。 (2)指出示范程序采用的算法 , 以此为基础将其改造为中点线算法或 Bresenham 算法, 写入实验报告。 (3)根据示范代码,将其改造为圆的光栅化算法,写入实验报告。 (4 )了解和使用 OpenGL 的生成直线的命令,来验证程序运行结果。 3. 实验原理 示范代码原理 DDA 算法。下面介绍 OpenGL 画线的一些基础知识和 glutReshapeFunc () 函数。 (1)数学上的直线没有宽度 ,但 0penGL 的直线则是有宽度的。同时 , OpenGL 的直线必须 是有限长度,而不是像数学概念那样是无限的。可以认为 , OpenGL 的“直线 概念与数学上 的“线段”接近,它可以由两个端点来确定。这里的线由一系列顶点顺次连接而成 , 有闭合 和不闭合两种 . 前面的实验已经知道如何绘 “点”,那么 OpenGL 是如何知道拿这些顶点来做什么呢 ? 是 依次画出来,还是连成线? 或者构成一个多边形 ? 或是做其他事情 ? 为了解决这一问题, OpenGL 要求:指定顶点的命令必须包含在 glBegin 函数之后, glEnd 函数之前 (否则指定的 顶点将被忽略 ),并由 glBegin 来指明如何使用这些点。 例如 : glBegin(GL P0INTS) , glVertex2f(0.0f , 0.0f); glVertex2f (0 。5f, 0.0f) ; glEnd (); 则这两个点将分别被画出来。 如果将 GL_POINTS替换成 GL_LINES,则两个点将被认为是直 线的两个端点 , OpenGL 将会画出一条直线 . 还可以指定更多的顶点 , 然后画出更复杂的图形。 另一方面 , glBegin 支持的方式除了 GL_POINTS和 GL_LINES,还有 GL LINE STRIP、 GL LINE L0 〇P、 GL TRIANGLES、 GL TRIANGLE STRIP、 GL TRIANGLE_FAN等几何图元。 (2 ) 首次打开窗口、 移动窗口和改变窗口大小时, 窗口系统都将发送一个事件, 以通 知程序员 。如果使用的是 GLUT,通知将自动完成 ,并调用向 glutReshapeFunc 注册的函数 . 该 函数必须完成下列工作: ①重新建立用作新渲染画布的矩形区域。 ②定义绘制物体时使用的坐标系 . 如: void Reshape(int w, int h ) { glViewport(0 , 0 , (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION) ; glLoadIdentity( ) ; gluOrtho2D (0 。0, (GLdouble ) w,0.0, (Gldouble )h) ; } 在 GLUT 内部, 将给该函数传递两个参数 : 窗口被移动或修改大小后的宽度和高度, 单 位为像素 . glViewport ()调整像素矩形,用于绘制整个窗

文档评论(0)

虾虾教育 + 关注
官方认证
内容提供者

有问题请私信!谢谢啦 资料均为网络收集与整理,收费仅为整理费用,如有侵权,请私信,立马删除

版权声明书
用户编号:8012026075000021
认证主体重庆皮皮猪科技有限公司
IP属地重庆
统一社会信用代码/组织机构代码
91500113MA61PRPQ02

1亿VIP精品文档

相关文档