基于GLUT的OpenGL应用程序框架构建

来源 :电脑学习 | 被引量 : 0次 | 上传用户:lzayy9
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  王继东 庞明勇 李建生
  摘 要:介绍了GLUT的设计原理和功能,阐述了基于GLUT构建OpenGL应用程序框架的步骤。并给出一个具体的应用程序实例。
  关键词:GLUT OpenGL 应用程序框架
  
  1 GLUT设计原理与功能
  
  GLUT是用ANSI C和FORTRAN语言实现的一个编程接口,其API是独立于窗口系统的,所以它不返回任何活动的窗口句柄、指针及其他数据结构。GLUT简化了应用OpennGL渲染的过程,通过GLUT的API只需简单的几步就能为OpenGL创建一个可供渲染的窗口。它的设计和OpennGL一样也是基于状态机的,当前窗口和当前菜单是GLUT两个最重要的状态,OpenGL中的函数一般只作用于这些状态绑定的窗口。根据简单应用程序的一般要求,GLUT合理地预定义了大部分的初始状态,从而简化了状态设置过程。
  GLUT提供的功能包括多窗口OpenGL渲染、回调模式驱动的程序执行方式、完整的输入设备、提供系统闲置时调用的idle函数、提供弹出式菜单、提供常用的线框和实体模型的绘制、支持图像/图形字体的绘制、其它的窗口管理功能(包括管理重叠层)等,这些功能基本满足了OpenGL图形应用程序开发的需要。
  
  2 基于GLUT构建OpenGL应用程序框架的方法
  
  基于GLUT构建OpenGL的应用程序框架可以按照以下几个步骤进行:
  (1)初始化和创建窗口。在任何GLUT子程序之前,应首先调用能够处理命令行选项的gutlnit( )函数对GLUT库进行初始化,然后,再调用glutInitDisplayMode( )、glu-tlnitWindowSize( )、glutInitWindowPosition( )对窗口的显示模式、大小以及窗口在屏幕中的位置进行设置,最后,调用gutCreateWindow( )函数创建新窗口;(2)设置OoenGL初始状态。一般在窗口创建成功后,我们将要对OpenGL初始状态进行设置。如使用glColor*( )函数设置当前颜色,使用glLingIlt*( )函数设置光源属性,使用gIBlendFunc( )函数设置混合操作,使用glEnable( )和glDisable( )函数激活和关闭各种状态开关等;(3)注册回调函数。在程序进入主循环之前,应对回调函数进行0注册。常用的注册回调函数有:glutDisplayFunc()函数、glutReshapeFunc( )函数、glutKeyboardFunc( )函数、glutSpecialFunc( )函数、glutInit( )函数。(4)进入GLUT事件处理循环。在完成前面所有设置后,就可以通过glutMainLoop( )函数进入GLUT事件处理循环。当某事件被激活,应用程序将调用相应的已注册回调函数实现特定的功能,如窗口重绘、键盘交互、鼠标交互等。
  
  3 应用程序实例
  
  在Windows2000和VC6.0环境下,建立一个基于GLUT的简单OpenGL程序实例。实例主要是绘制一个半透明纹理的正方体,并可以使用键盘上的Home键和方向键控制正方体旋转。
  
  3.1 Include文件及程序库链接设置
  把glut.h、glut32.1ib文件复制到VC6.0程序文件夹下的子文件夹中(glut.h复制到\Microsoft Visual Stu-dio\VC98\Include\GL,glut32.1ib复制到\Microsoft VisualStudio\VC98\Lib),把glut32.dll复制到操作系统所在文件夹的子文件夹中(一般为\WlNNT\system32)。
  打开VC6.0建立一个空的Win32控制台程序并新建一个C 源文件。在C 源文件的开始处,除了包含其他必要头文件以外还必须包含GLUT头文件,代码为:#in-elude。因为glut.h文件中已包含了glu.h和g1.h文件,所以不需要再使用include命令包含这两个文件了。
  程序库的链接可以通过VC6.0的菜单选项“Project->settings”设置,不过这里我们使用更加灵活方便的命令行完成,这样在Debug模式与Release模式之间切换时就不会出错。代码如下:
  
  
  3.3 OpenGL绘制与交互
  
  4 结束语
  
  开发者使用GLUT能够在不考虑开发平台的基础上直接进行OpenGL图形开发,提高了应用程序的开发效率降低了开发的门槛。
其他文献
[编者按]  米开朗基罗和提香的去世标志着意大利文艺复兴走到了尾声,虽然最初的样式主义大师们也已渐行渐远,但罗马和佛罗伦萨仍到处弥漫着样式主义的影响,多种艺术风格融合发展的多元主义倾向正造就着这一时期的艺术大师们:来自法国的詹博洛尼亚有着大师级的表现,他很好地串联了文艺复兴与前巴洛克之间的文脉,但他终究无法复制米开朗基罗的神话。画坛直到另一个也叫米开朗基罗的艺术家——卡拉瓦乔的出现,才真正给意大利
随着科学技术的快速发展,数字出版正在一步步侵蚀着传统出版的市场份额。而教材循环使用、教辅政策趋紧、美术高考人数逐年下降等也在一定程度上对美术出版造成了冲击。当前,读图时代的到来,掀起了大美术图书出版的极大繁荣,似乎给美术类出版社的发展带来了机遇。但蜂拥而至的非美术类出版社和民营文化公司,带给我们更多的不是机遇,而是挑战。面对困局、读图时代的到来以及大美术出版的全员参与,美术类出版社探索一条扬长避短
限高杆在人们的生活中随处可见,无论是城乡还是山区,它能保护隧道、桥梁免受损坏。但由于某些超高车辆的冲撞,限高杆本身和司机、车辆等常常遭到损伤,严重的还会车毁人亡。为了减少损失,保障司机、车辆等的安全,我对现有限高杆进行了改装,在限高杆前方安装了激光高度测量报警器,当车辆高出限高高度,报警器就会自动报警,警示司机不能通过。我还在现有限高杆的基础上加了一对立柱,在立柱顶端预留了滑行轨道和弹簧,当车辆碰
展览时间:2014.01.18至03.09  展览地点:辽宁省博物馆  在马年新春之际,辽博特别推出“中国历代画马名作展”,其中《虢国夫人游春图》和《神骏图》两件作品,出于文物保护的考虑仅在2月25日—3月9日期间展出两个星期。现藏辽博的《虢国夫人游春圖》是极负盛名的传世珍品之一,原作出自唐朝著名书画家张萱的手笔,现存为宋徽宗赵佶摹本,是一幅高51.8厘米、长148厘米的画卷。该画再现了唐玄宗宠妃
生物模型设计与制作评比展示活动为学生提供了主动学习、积极探索、动手实践的机会,是开发学生智慧的有效途径。学生在亲自参与制作生物模型和运用模型演示生物知识的过程中,赋予了课堂新的活力。  引领学生构建生物模型  初中生物新课程标准倡导探究性学习,引导学生勤于动手和动脑,培养创新精神和实践能力。那么初中生物课如何进行探究性学习,使学生动起来呢?朝阳区举办的生物模型设计与制作活动为解决这一问题提供了新思
一  石涛所处的那个时代,真是让人无奈。他是汉人,又不是一般的汉人,自从那位太监把他带出王宅,他就似乎再也没有回去过。石涛的身世变故并不是来自清廷的屠戳,而是来自王朝内部的权利倾轧,这就诠释了为什么石涛在康熙南巡时两次前往见驾,并且匍伏在地,感激涕零,为什么会通过各种手段谋取进身的机会。很显然,在他前期的生命历程中,他隐藏了自己的身世:当一切机会都化成泡影时,他又选择公开自己的身份。当然这时的清廷
[编者按]  城北徐公,吞吐大荒。这位“徐公”,就是20世纪杰出的人物画家、曾担任人民美术出版社创作员的徐燕孙。徐燕孙早年参加中国画研究会,拜清末首席宫廷画家管念慈为师,出入内府饱览历代书画名作,遂深得宋元名画真髓。他的画常取材于历史人物、史籍典故,通过突出内心境界,表现人物性格,二三十年代时就已名动京华。30年代,张大千在北平因为一幅画上的题字与徐燕孙打起笔墨官司,甚至准备诉诸法庭。各大小报刊连
在广袤的中原大地下面居住着两个聪明伶俐、勤劳勇敢的小仓鼠,他们是唠哩哩和噜啦啦,他们从认识汉字开始学习书法,以丰富的汉字为基础,以学习精彩的书法为乐趣,不断愉快地发掘着中华大地下面的书法文物宝藏,一步步认识我们中华文明的博大精深。  绘本中小仓鼠的形象是相对写实的,因其形象本身就很好玩,延续并夸张突出毛茸茸的毛发和晶莹圆润的小眼睛、红鼻头等特点,更深入人心。在动物造型上摒弃当下快餐文化背景下审美精
在纸上作画没啥稀奇,可是在水面上作画恐怕就没有多少人见过了,这是一种古老的中国艺术——湿拓画。湿拓画主要通过油质颜料在液体表面作画,这种技艺在1 000多年前通过丝绸之路传播到了土耳其。我校兴趣小组开展湿拓画探究综合实践活动,让学生们通过实验了解不同绘画材料的特性,获得美的享受,成为“一带一路”上的艺术传承者和推广者。  引导学生自主探究  简简单单一盆水、几瓶彩色颜料粉、一杆笔刷、几把画锥,在水
提起北京的传统工艺美术,诸如景泰蓝、京绣、风筝、面塑等具有浓郁“京味儿”的传统手工艺会首先被人们津津乐道,而像“兔儿爷”、“毛猴儿”这样在老北京流传的民间玩具还因其喜庆吉祥的寓意、栩栩如生的形象而家喻户晓。在北京地区甚至还以其为原型派生出了不少诙谐传神的民间谒语,足以看出传统工艺美术在北京地域文化中的重要地位。近来,由首都师范大学出版社出版的《百年京作——20世纪北京传统工艺美术的传承与保护》(以