基于GLUT的OpenGL程序设计.docVIP

基于GLUT的OpenGL程序设计.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于GLUT的OpenGL程序设计   摘 要:针对OpenGL不包含窗口管理和事件检测等功能的缺陷,GLUT(OpenGL Utility Toolkit)工具包对窗口和事件的管理工作进行标准化和简化。简要介绍GLUT的主要功能和安装方法,给出一个基于GLUT的程序框架,详细分析基于回调函数的事件管理、变换顺序及堆栈操作、坐标系等技术。为更复杂的图形程序设计提供基础。   关键词:GLUT程序框架;回调函数;变换顺序;堆栈操作   中图分类号:TP391.9   文献标识码:B   文章编号:1004―373X(2008)04―071―03      OpenGL是国际上通用的开放式三维图形标准,他包含大量高效的绘制函数,具有移植性好、开放等优点。Open―GL独立于窗口系统和操作系统,因此他没有建立并管理窗口的函数,也没有检测鼠标键盘事件的函数。但是在图形程序中,不论是微软的Windows还是Unix等,图形均在窗口中展现,因此图形程序必须至少打开一个窗口。并且,图形程序一般均有交互功能,包括使用人员和图形程序之间的交互,以及图形程序接受操作系统或窗口系统提供的服务。因此,在具体的操作系统和窗口系统下进行OpenGL图形程序设计时,设计人员把相当多的时间与精力花费在窗口建立和管理、事件检测与处理等与虚拟仿真关系并不紧密的环节上。例如在Windows下,设计人员必须关联绘制描述表RC和设备描述表DC,必须设置超过20个元素的象素格式。在微软基础类库MFC下,设计人员必须了解更为复杂的消息映射、类型识别、动态生成、命令传递等。这些不但增加了图形程序开发的工作量,而且影响了图形程序开发的效率。   GLUT(OpenGL Utility Toolkit)是Mark Kilgard开发的OpenGL实用工具包,他对窗口和事件的管理工作进行了标准化和简化,而且被移植到各种OpenGL实现中,包括X窗口系统和微软的视窗系统。利用GLUT开发OpenGL图形程序,可以使设计人员以GLUT提供的程序框架为基础,集中精力进行图形开发,从而提高程序设计效率。      1 GLUT主要功能      GLUT提供了许多实用的功能,如多视窗的绘制、回调函数驱动的事件管理、支持多种输入设备(键盘、鼠标、空间球等)、空闲事件与定时器、下拉式菜单管理、三维几何模型绘制、位图与字体等。下面介绍常用的一些功能。      1.1 窗口初始化   包括4个函数。函数glutInit用于初始化并处理命令行参数。函数glutlnitDisplayMode用于初始化显示模式,如颜色为RGBA模式还是索引模式,使用单缓存还是双缓存,是否使用深度缓存、模板缓存及累积缓存等。函数glutInitWindowPosition指定窗口左上角在屏幕上的位置。函数glutlnitWindowSize指定窗口的大小,以象素为单位。      1.2 事件处理   只有一个函数glutMainLoop,他用于显示创建的窗口,处理输入的事件,触发回调函数,进入循环直到程序退出。      1.3 窗口和菜单管理   窗口管理包含18个函数,用于建立、销毁窗口及可能的子窗口,管理和设置窗口的属性。其中比较重要的如函数glutCreateWindow,用于建立一个新的顶层窗口,函数glutCreateSubWindow建立一个子窗口,函数glutPos―tRedisplay用于提醒glutMainLoop调用注册的显示回调函数,函数glutSwapBuffers用于交换当前窗口的前后缓冲。菜单管理用以设计简单的下拉式菜单,包含11个函数,如创建菜单函数glutCreateMenu,glutAddMenuEntry,设置当前菜单glutSetMenu等函数。      1.4 回调函数注册   GLUT中有20个回调函数,用于响应用户事件。最重要的回调函数是glutDisplayFunc,当GLUT认为需要重新显示窗口内容时,都将执行这一函数注册的回调函数。另外一些重要的回调函数注册函数有,函数glutRe―shapeFunc用于注册窗口大小改变这一事件发生时GLUT将调用的函数。glutKeyboardFunc和glutMouseFunc用于注册键盘和鼠标事件发生时的回调函数。函数glutMo―tionFunc注册鼠标移动事件的回调函数。这3个函数用于人机交互处理。在没有其他事件处理时,GLUT将调用函数glutIdleFunc注册的函数,而函数glutTimerFunc则注册处理定时器事件的函数。      1.5几何建模函数   OpenGL绘图函数只能生成点、直线、多边形等简单的几何图元,GLUT提供了18个创建三维物体的函数

文档评论(0)

heroliuguan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档