结合OpenGL的图形编程教学模式

点赞:10780 浏览:45079 近期更新时间:2024-03-13 作者:网友分享原创网站原创

摘 要:计算机图形学有理论性与实践性紧密结合的特点,教师教学和学生学习难度较大.为帮助计算机图形学课程的教学,提出了控制台应用程序+OpenGL和MFC可执行程序+OpenGL两种图形编程教学模式,并比较了两者的优缺点.

关 键 词:图形编程;计算机图形学;教学模式;OpenGL

中图分类号:TP434文献标识码:A文章编号:1672-7800(2013)006-0148-02

基金项目:武汉纺织大学教研项目(2010020)

作者简介:陈永强(1967-),男,博士,武汉纺织大学数学与计算机学院教授,研究方向为计算机图形图像处理.

1国内教学现状

为有助于学生学习和理解计算机图形学的基本概念、原理与算法,需要结合形象化的图形编程实例和实验来补充说明和练习.国内教材和教学中计算机图形学案例和实验图形编程选用的编程语言有C、C++和Ja.Ja主要面向嵌入式设备和网络使用,目前PC机上软件编程教学通常采用C和C++编程语言,选择的图形开发环境是在VC++里使用控制台应用程序、MFC可执行程序、OpenGL开放图形库、Direct3D图形库等几种方式.

在课时有限的前提下,由于没有结合使用图形库的图形编程案例,加上实验难度较大,导致学生学习兴趣降低而很难完成理论学习和实验项目.Direct3D是微软公司在MicrosoftWindows操作系统上所开发的一套3D图形编程接口,是DirectX的一部分,仅能在Windows平台使用,平台移植性差.OpenGL是一个专业的图形编程接口和功能强大的开放图形库,提供了基本的函数库,涵盖了开发二、三维图形程序所需的各个方面.OpenGL独立于窗口系统和操作系统,开发的应用程序可以十分方便地在各种平台间移植,且与VC++接口紧密.因此,在VC++里结合OpenGL图形库开展计算机图形学课程的辅助教学是最佳选择.

2结合OpenGL的教学模式

开放图形库OpenGL是一个性能卓越的开放图形编程接口(API),适用于广泛的计算机环境,具有使用简便、高效率、稳定可靠、性能高、可扩展移植、适应性强等特点,是唯一真正开放、独立于供应商、跨平台的图形开发行业标准,是图形开发工作者必须掌握的开发工具.OpenGL具有模型绘制、模型观察、颜色模式、光照材质、图像效果增强、位图和图象处理、纹理映射、双缓存动画、交互等功能.OpenGL主要由OpenGL核心库(GL)、OpenGL实用程序库(GLU)、OpenGL编程辅助库(AUX)、OpenGL实用程序工具包(GLUT)、Windows专用库(WGL)等函数库组成.OpenGL图形函数定义为独立于任何程序设计语言的一组规范,在各种编程语言中,如C、C++、FORTRAN、Ada和Ja等,都可以调用OpenGL的库函数.

计算机图形学课程的图形编程实例和实验教学中,采用VC++结合OpenGL图形库,可以选择控制台应用程序+OpenGL和MFC可执行程序+OpenGL两种模式之一.

2.1控制台应用程序+OpenGL模式

VC++里采用控制台应用程序+OpenGL的图形编程模式实际上是一种用C语言调用OpenGL函数的面向过程的编程框架,其程序的基本结构是定义窗口、清理窗口、绘制物体和结束运行.

(1)头文件包含.利用OpenGL实现图形绘制,先要引入OpenGL核心库GL及其它需要使用的GLU库的头文件,并要通过头文件引入窗口系统.若使用GLUT库函数进行窗口管理,可只需要用GLUT代替GL和GLU的头文件包含.

(2)使用GLUT库实现窗口管理.首先用glutInit函数对GLUT初始化,处理所有命令行参数,然后使用glutInitDisplayMode函数设定窗口显示模式,包括缓存和颜色模型等;再使用默认值设定显示窗口的大小和位置,或使用glutInitWindowSize指定显示窗口的大小和glutInitWindowPosition函数指定窗口左上角的屏幕位置;最后用glutCreateWindow函数创建一个带有OpenGL渲染环境的窗口,参数是一个保存了窗口标题名称的字符串.

(3)利用OpenGL绘制图形.绘制图形前,要进行窗口清屏,即先用glClearColor函数指定窗口的背景色,之后用glClear函数中指定的值设定颜色缓冲区值,即将窗口中每个像素的颜色设定为背景颜色.接着可使用glColor函数设置绘制图形的颜色.

在绘制图形时,先使用glMatrixMode和gluOrtho2D函数设定投影参数,即把要绘制的三维图形投影到显示窗口.

然后调用一些OpenGL函数实现图形的绘制,用glFlush函数通知图形系统执行绘制.此时,通常把重绘场景所需要的函数命令放入一个不带任何参数的显示回调函数里,通过glutDisplayFunc函数作为注册函数将显示回调函数注册指定为当前窗口的显示内容函数.类似地,可以用GLUT提供的其它注册函数注册相应事件的回调函数,处理用户输入或系统状态改变等事件.

最后用gluMainLoop函数启动主GLUT事件处理循环,运行程序显示绘制窗口.

2.2MFC可执行程序+OpenGL模式

微软基础类库MFC是用来编写Windows应用程序的C++类集,以层次结构组成,封装了大部分WindowsAPI函数和控件.利用MFC和向导来编写Windows应用程序,是VC++的一种面向对象编程方法,其基本步骤先是使用应用程序向导生成Windows应用程序的基本框架,然后用类向导来进行应用程序的类的建立、消息处理、数据处理函数或定义控件的属性、事件和方法,最后把应用程序所要求的功能添加到类中.在VC++里编写一个通用基础框架的空OpenGL应用程序,在此基础上通过添加其它代码就可完成案例程序和实验程序.

(1)创建VC程序.运用VC++应用程序向导,选择MFC可执行程序,建立一个新的单文档应用程序工程,工程包含Doc、View、App、MainFrame和ChildFrame5个类.通用基础框架的空OpenGL应用程序主要涉及View类程序修改.

(2)设置OpenGL基础库.在View类头文件和ProjectSettings对话框里的General页面里包含OpenGL头文件和函数库文件.

(3)设置像素格式与创建渲染描述表.OpenGL不使用Windows设备描述表,是使用渲染描述表完成图形图像的映射,描述表的映射核心是像素格式的设置.在工程的View类文件里,通过初始化PIXELFORMATDESCRIPTOR结构、设置和测像素格式来完成对像素属性的设置,包括缓存设置、颜色模式、颜色位数、深度缓冲位数等.在响应工程View类的Windows消息WM_CREATE的消息响应函数OnCreate里创建并当前化一个渲染描述表,在响应Windows消息WM_DESTROY的消息响应函数OnDestroy里使渲染描述表非当前化并删除,消息响应函数里调用创建wglCreateContext、当前化wglMakeCurrent、删除wglDeleteContext等管理渲染描述表的OpenGL函数.

(4)设置OpenGL风格.只有OpenGL的客户区才能接受OpenGL的绘制,要在View类的PreCreateWindow函数里用WS_CLIPCHILDREN和WS_CLIPSIBLINGS设置OpenGL风格.


(5)设置OpenGL视点.在当前化渲染描述表之后,获取客户区的大小、清除深度缓存、启动深度测试和OpenGL模型变换,然后在响应Windows消息WM_SIZE的消息响应函数OnSize里建立视点,启动变换,建立体.

完成上述步骤后,即建立了一个通用基础框架的空OpenGL应用程序.在通用基础框架的空OpenGL应用程序基础上,在工程View类的消息响应函数OnDraw里可用OpenGL函数绘制图形.

2.3两种模式比较

相比较而言,控制台应用程序+OpenGL模式较简单.教师教学准备方便,学生在掌握基本C语言编程知识和OpenGL实用程序工具包GLUT的窗口管理方法基础上,可集中精力学习OpenGL的图形绘制技术.学生学习理解容易、上手快,数学效果明显.但这个模式与实际的主流图形软件开发方式有一定距离,实用性差,适用范围窄.

MFC可执行程序+OpenGL模式则要复杂一些.学生需学习《C++语言程序设计》和《可视化程序设计》前修课程,能较好地理解MFC可视化编程机制和框架,了解MFC文档视结构、Windows消息响应、Windows标准控件等知识.在了解OpenGL的Windows专用库函数设置像素格式与创建渲染描述表的方法后,再开始学习OpenGL的图形绘制技术.这个模式里的MFC编程框架与OpenGL图形绘制关系复杂,要求掌握的预备知识较多,学习时间较长,学生需有一定的编程能力.但它符合面向对象的软件开发方式,学生一旦掌握熟练,对今后从事软件开发工作大有益处.

结合OpenGL的图形编程教学模式参考属性评定
有关论文范文主题研究: 计算机图形学相关论文范文 大学生适用: 自考论文、自考论文
相关参考文献下载数量: 100 写作解决问题: 如何怎么撰写
毕业论文开题报告: 论文任务书、论文题目 职称论文适用: 核心期刊、高级职称
所属大学生专业类别: 如何怎么撰写 论文题目推荐度: 免费选题