摘 要:针对可视化程序设计教学过程中显现的问题,提出相应的教学改进方法。以MFC框架为基础,通过加强上机实践、改进多媒体教学、引入实例及制作教学演示程序,引导学生学习OpenGL可视化函数工具包,结合地理信息系统专业学生的培养方式,为学生制定学习和实践平台,并开发出相应的教学演示系统,很好地辅助课堂教学,采用教学互动方式,开拓了学生的思维模式,显著提高教学质量。
关键词:OpenGL;MFC;教学实践;教学改革
可视化编程技术已经广泛应用在各行各业中[1-4],对于地理信息系统专业学生也必须紧跟时代潮流,将可视化程序设计掌握并运用到实践学习中去。本校将OpenGL三维可视化程序设计作为一门必修课程列入教学计划中。如何培养学生学习本专业图形的生成算法及显示流程,如何利用VC与OpenGL结合进行学生程序开发能力的培养,并在有限的学时条件下,达到理想的教学目标,不是一件易事。
1 OpenGL教学中存在的问题
1.1 VC++平台环境不熟悉
传统的教学平台选择VC++控制台应用程序作为演示平台,该平台程序设计简单,易于理解,适合有C语言功底的学生学习。但该平台可视化演示效果差,针对复杂的地理场景显示显得不够宽泛,缺乏可操作性,人机交互能力有限,教学实践环节不够科学,不够系统[5]。
1.2 OpenGL库函数众多,难于掌握
OpenGL核心库中包含115个函数(前缀为gl),实用库中包含43个函数(前缀glu),辅助库中包含31个函数(前缀aux),工具库中包含30多个函数(前缀glut)[2]。每个库中的函数都有很多的重载形式,这往往将需要掌握的库函数加倍,在有限的课堂教学时间内,想要掌握OpenGL库中的众多函数,会显得力不从心。从而打击学生的学习兴趣,不利于教学。
1.3 部分关键函数参数个数多,不易理解
OpenGL的很多库函数所携带的参数往往有很多,且不易掌握。例如,投影函数glFrustum(GLdouble left,GLdouble Right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far)带有6个参数,如果不配合图解,很难让学生理解并掌握它的使用。再比如二维纹理定义的函数void glTexImage2D(GLenum target,GLint level,GLint components,GLsizei width,glsizei height,GLint border,GLenum format,GLenum type,const GLvoid*pixels),相对于投影函数来说,二维纹理定义函数就显得更加复杂,直接讲解,难以理解其参数含义,不易掌握,从而产生畏难负面效应,不利于学生学习。
1.4 教学缺乏应用背景,学习积极性不高
从学生的角度出发,学生们只会根据教学内容进行编程,缺乏对相关函数与算法的直观展示,不能有效地吸引学生主动去学习。再者,大多数同学不重视三维图形可视化方面的学习,他们认为将来工作不会涉及关于三维图形设计方面的内容,从而学习积极性不高,缺乏学习的主动性[4]。
2 教学方法改革与改进
2.1 选用MFC作为开发与讲解框架
通常情况下,OpenGL以及计算机图形学方面的教学都采用C/C++语言编写,程序设计简单,但可视化以及人机交互效果较差,学生掌握起来较困难。MFC(微软基础类库)是VC++平台下程序开发框架,该框架可以构建基于对话框的应用程序、基于单文档的应用程序以及基于多文档的应用程序,通过使用MFC框架下的诸多可视化控件进行编程,可以迅速建立界面美观、通俗易懂、便于交互操作的程序框架,其典型的消息事件驱动模式[6-7],如菜单消息映射、基本控件消息映射(按钮等),增加了人机交互操作,提升学生的学习兴趣,大大提高学生的动手能力,通过不断的探索人机交互操作,增进学习效率。
2.2 加强上机实践辅导
OpenGL与MFC进行三维图形可视化程序设计,除去课堂教学外,应将大量的教学学时应用在上机实践环节上,通过布置相关的图形演示程序及图形显示算法,一方面培养学生熟悉VC++编程环境,熟悉MFC与OpenGL如何联合进行程序开发;另一方面,通过推敲相关代码,培养学生的实践动手能力。
2.3 引用实例进行课堂教学
课前搜索一些与本节课程有关的应用实例,如三维立体动画、相关三维建模可视化软件等[8],在具体讲解过程中,引入实例,既能提高学生们的学习兴趣,又帮助他们提高对本节课的内容理解。如打开Google SketchUp三维建模软件,在其中演示物体的绘制、物体的平移、旋转、缩放等操作,帮助他们学习glVertex()、glTranslate()、glRotate()等函数,并理解函数所带参数的意义,启发学生们去思考。
2.4 制作教学课件及相应的演示程序
由于计算机软硬件的飞速发展,传统的板书式教学已经向多媒体教学方向发展,而OpenGL教学又与计算机程序相关联,更加体现出多媒体教学的优越性,图形显示直观、易懂,符合学生们的好奇心理。将OpenGL讲解内容按前后章节,利用powerpoint制作出精美的教学课件,并配以程序演示,从很大程度上吸引学生的注意力,并且,课件后附具体的作业,将其拷贝给每一位学生,在课后业余时间依然可以随时打开课件内容学习,为学好OpenGL提供便利。
2.5 采用教学互动,提高学生的空间想象能力与语言表达
在一段学时的课堂教学完成后,布置一次大作业,要求学生们基于MFC框架,自由发挥,对现实世界的感兴趣物体进行三维建模,要求写出具体的程序代码、建模思路及主要用到的OpenGL函数,并制作PPT在课堂上进行教学互动,这无形中提高了教学质量,达到了良好的教学目的。同时,在编写代码时,提高学生的空间想象力与逻辑思维能力,在教学互动中,又能培养其语言表达能力。
3 基于MFC的教学演示程序
为帮助C++功底较浅的学生学习,将基础的MFC与OpenGL程序框架搭建好,供日后学生自己向其中添加OpenGL建模代码,并基于此编写所有图形显示程序。以投影变换为例,图1为教学演示投影函数详解,图中可以直观展示glFrustum函数透视投影场景的效果及各参数的含义,右边是该函数所携带的6个参数。根据图解,学生们很容易就可以掌握这个函数的使用,图2亦同理。
再以图3为例,在颜色教学过程中,用到了MFC中滑块、滚动条、旋钮、编辑框等控件,通过三色分量RGB的任意取值,在右边的显示框中,动态显示当前取值颜色,一方面使学生们熟悉MFC常用控件的使用,另一方面,掌握OpenGL中有关颜色操作函数,将MFC与OpenGL的联合更加深入易懂。
通过这样一些教学改革,启发学生进行创造性思维,在教学互动过程中,同学们都纷纷拿出自己所建的模型进行讨论,达到了良好的教学效果。从改革教学方法、教学课件入手,利用实例吸引学生注意力,不断提高本课程的教学质量。
参考文献
[1] 刘煜岗,蔡洪斌.《计算机图形学》实验教学研究与探讨[J].实验科学与技术,2012,10(6):262-264.
[2] RICHARD S. WRIGHT, J R. Benjamin Lipchak Nicholas haemel, 张琪,付飞(译).OpenGL超级宝典[M].北京:人民邮电出版社,2011.
[3] BO CHEN,HARRY H.Cheng.Interpretive OpenGL for Computer Graphics[J]. COMPUTERS &GRAPHICS, 2005,29:331-339.
[4] 杨斌.OpenGL在计算机图形学教学中的应用研究[J].滁州学院学报,2012,14(5):105-107.
[5] 张灿.基于OpenGL实验平台的计算机图形学教学改革研究[J].电脑知识与技术,2012,8(32):7826-7827.
[6] 贺少华,吴新跃.基于VC++和OpenGL的大型机械装置虚拟教学训练系统的开发[J].系统仿真学报,2009,21(4):1059-1062.
[7] 黄燕挺.三维控件在教学实验中的应用研究[J].计算机与数字工程,2011,39(8):192-195.
[8] 杨长强,郑永果.“计算机图形学”教改实践[J].计算机教育,2010(24):53-56.