计算机图形学编程(使用OpenGL和C )(第2版)
- 格式:pptx
- 大小:1.67 MB
- 文档页数:84


基于OpenGL和MFC的三维建模教学实践与改革
张志华;程耀东;张新秀
【摘 要】Aiming at the emerging issues within the teaching process of
visual programming, the corresponding improved teaching methods is put
forward. Based on the MFC framework, the students are guided to learn
OpenGL toolkit of visualization functions according to strengthening
practices, improving multimedia teaching, inducing examples and
producing teaching demonstration program. Combined with training
methods of GIS major, the study and practice platform is developed for
students, and the teaching demonstration system is obtained to aid the
classroom teaching. It is significantly improved the quality teaching that
the students′ thinking patterns extended by using interactive teaching
methods.%针对可视化程序设计教学过程中显现的问题,提出相应的教学改进方法。以 MFC 框架为基础,通过加强上机实践、改进多媒体教学、引入实例及制作教学演示程序,引导学生学习 OpenGL可视化函数工具包,结合地理信息系统专业学生的培养方式,为学生制定学习和实践平台,并开发出相应的教学演示系统,很好地辅助课堂教学,采用教学互动方式,开拓了学生的思维模式,显著提高教学质量。
2012年第7期 计算机光盘软件与应用 Computer CD Software and Applications 计算机教学与教育信息化 OpenGL在计算机图形学教学中的应用 负照强 (南方医科大学,广州510515) 摘要:结合对《计算机图形学》课程教学的理解,提出openGL在计算机图形学教学中的应用,利OpenGL在图形 教学中应用,教学效果得到明显提高。 关键词:计算机图形学;OpenGL;教学 中图分类号:TP391.41—4 文献标识码:A文章编号:1007—9599(2012)07—0234—02 《计算机图形学》是计算机专业中的专业课,其课程包括图 形的表示、图形的输入与输出与显示、图形的几何变换以及人机 交互绘图等方面的技术。计算机图形学既是一门科学,它包括一 些数学基础和理论,又是一门技术,包括一些技巧和方法。 对计算机图形学得教学中可以发现,由于部分算法复杂度较 高,在短期内,学生难以快速接受。有的章节中,算法的理论性 分析较多,并且非常抽象,学生也难以理解,因而对图形学的课 程学习表现出了兴趣下降等。在学生课外上机操作中,很难将理 论与实践结合起来,因此学校效率比较低。 对上述问题,笔者在教学中也进行了思考,认为这门可能理 论性较强,特别是涉及一些复杂数据的变换内容,这部分往往是 学生理解遇到的主要障碍。同时,由于实践环节的缺少,教学质 量并不高。在教学中应该以比较典型、易用的开发环境来做为上 机的环境,并且可以开发一些配套的教学课件,这样,可以将抽 象的理论部分通过图形进行展示,生动的图像可以给学生留下深 刻的印象,也能培养学生的实践性。本文结合笔者在教学中对 OpenGL的应用,介绍了课件开发的体会与教学经验。 一、教学应用思想 传统的针对课件的制作,目前有很多工具可以选择,最基 本的是Powerpoint中提供的制作组件。但是这些制作组件往 往比较简单,难以将抽象的图形学理论形象显示出来。笔者联 系《图形学》理论教学与实践的联系,认为应该采用一种新的 开发工具来提高图形学课件的制作质量。开发工具应该能够快 速制作便于学生理解的图形算法演示:可以将不同的知识点分 模块分别制作课件,在课件中可以备注关键部分以及一些对应 参考资料;通过这些课件可以培养学生上机实践的兴趣;另外 对于课件需要较强的交互性,这样学生也可以参与互动,提高 学习效率。 为了高效对课件进行设计,笔者选择MFC以及OpenGL图 形包作为开发工具。首先,MFC是微软推出的一款软件开发框 架,在此框架下,开发只需要掌握MFc的消息通信机制,通过 使用其中的控件,可以迅速建立制作界面。OpenGL图形包是 流程的图形开发工具软件。它支持并兼容常见的工业标准。通 过调用其提供的接口函数显示特效。利用图形处理资源,开发 的演示效果非常优秀。MFC使用vc++语言,其消息模型是事件 驱动的思想,比如按钮的点击,参数的选择,都可以让对应的 事件来响应。通过理解MFC的消息机制可以知道,其消息分发 处理策略采用多线程实现,因此对参数配置响应很快。这大大 提高了学生了摸索学习的效率,在理解内容的基础上,学生甚 至可以自己动手编写响应的图形处理算法演示课件。 二、OpenGL的应用 Visual Studio中提供了代码编辑,程序编译,调试等功 能,是个整合很多的集成开发环境。在《图形学》课件制作中, 主要是利用OpenGL函数实现图形算法的演示。在OpenGL库中 提高了许多图形函数,通过对这些函数的单独调用或者函数组 合,“丁以实现基本的图像操作,包括对图形建模,在图形中队 ・-——234・-—— 色调进行处理,对光线进行判断。并且随着计算机技术的发展, 现有的OpenGL库中增加了许多新的组件,通过对这些组件的 调用,可以渲染出非常形象的三维效果。目前常用的图形设计 方法有: (一)图形生成算法 这部分的教学内容有:DDA、中点算法、BresenHam直线 算法及圆、椭圆的生成算法,让学生掌握计算机像素级绘制 算法的思想是图形学教学的精髓所在。 (二)几何变换 分为基本变换、变换的矩阵表示、齐次坐标、复合变换和 仿射变换。OpenGL在这个方面提供了大量的函数,可以帮助 void glLoadMatrix{fd)(const TYPE*m)//初始化矩 阵 void gMlultM atrix{fd)(const TYPE*m)//矩阵乘法 void glTranslate*()// 移 void glScale*(),//比例矩阵 void glRotate*()://旋转矩阵 通过对OpenGL中的库进行分析可知,在每次图像的操作 变换调用之前,都要先调用图像的初始化接口,以保证图像的 数据被正确载入内存。图像的表现形式都矩阵的形式,接口中 的矩阵就是图像的输入数据,通过函数变换后,改变后的数据 存储在变量m中。通过调用函数实现复杂的图像变换。 (三)投影变换 在实际开发应用中,应用比较多投影方式有两种,即平行 投影以及透视投影,这两种投影可以在不同场合根据需要进行 使用,也可以将两者进行结合,平行投影对于实体来说,产生 的是长方形的平行管道;而如果在投影过程中需要维持实体的 尺寸大小保持不变,那么就需要采用透视投影的方式,在 OpenGL库中提供了典型的投影调用接口 //投影函数 void gluOlrtho2D(GLdouble left,GLdouble right,GL double bottom,GLdouble top,GLdouble near,GLdouble far): void gluOrtho2D(GLdouble left,GLdouble righ,t GLdouble bottom,GLdouble top): //透视函数 void glFrustum(Gldouble left,Gldouble Right, GL double bottom,GL double top,GL double near, GLdouble far); void gluPerspective(GLdouble fovy,GLdouble aspect, GLdoub 1 e zNear,GL doube zFar): (下转第229页)
计算机图形学实验报告
引言
计算机图形学是计算机科学中一个重要的研究领域,它涉及了计算机图像的生成、处理和显示等方面的技术。本次实验旨在通过实际操作学习计算机图形学的相关知识,并利用图形学算法实现一些有趣的效果。
实验目的
1. 了解计算机图形学的基本概念和发展历程;
2. 掌握图形学中的基本几何变换,如平移、旋转和缩放等;
3. 实现一些常见的图形学算法,如光照模型、三角形剪裁和绘制等。
实验准备
在开始实验之前,我们需要准备一些实验所需的工具和环境。首先,确保计算机上安装了图形学相关的软件,如OpenGL或DirectX等。其次,为了编写和运行图形学程序,我们需要掌握基本的编程技巧,如C++或Python语言,并了解相关的图形库和API。
实验过程
1. 实现平移、旋转和缩放
首先,我们需要掌握图形学中的基本几何变换,如平移、旋转和缩放。通过矩阵运算,我们可以很方便地实现这些变换。例如,对于一个二维点P(x, y),我们可以通过以下公式实现平移:
P' = T * P
其中,P'是平移后的点,T是平移矩阵。类似地,我们可以用旋转矩阵和缩放矩阵来实现旋转和缩放效果。
2. 实现光照模型
光照模型是指在计算机图形学中模拟现实光照效果的一种方法。它可以提供更真实的视觉效果,让计算机生成的图像更加逼真。其中,常用的光照模型有环境光照、漫反射光照和镜面光照等。通过计算每个像素的光照强度,我们可以实现阴影效果和光源反射等功能。
3. 实现三角形剪裁
三角形剪裁是计算机图形学中一种常用的几何算法,用于确定哪些像素需要绘制,哪些像素需要剔除。通过对三角形的边界和视口进行比较,我们可以快速计算出剪裁后的三角形顶点,以提高图形渲染的效率。
4. 实现图形绘制
图形绘制是计算机图形学中的核心内容,它包括了点、线和面的绘制等。通过设定顶点坐标和属性(如颜色、纹理等),我们可以使用算法绘制出各种形状的图像。其中,常用的绘制算法有Bresenham算法和扫描线算法等。
华北电力大学科技学院
实 验 报 告
实验名称 基于OpenGL的综合性实验
课程名称 计算机图形学
专业班级:软件07K2 学生姓名:解文龙
学 号:071909020211 成 绩:
指导老师:张荣华 实验日期:2010年5月10-12日 华 北 电 力 大 学 实 验 报 告
第 1 页 共 14 页 实验一:使用OpenGL及Glut库编写程序绘制二维数学曲线。
一、 实验目的
1. 熟悉OpenGL基本图元函数的使用,进一步理解计算机图形学直线段和多边形的光栅化原理;
2. 熟悉OpenGL的图形几何变换函数、观察函数以及投影函数的使用,进一步理解计算机图形学中一个完整的三维绘制流程的工作原理;
3. 通过编程,在Visual C++环境下结合OpenGL标准图形库实现图形的几何变换(平移、旋转、缩放、对称及错切);
二、 实验要求
1. 每个学生单独完成;
2. 开发语言规定为C++,平台为Visual C++;
3. 使用OpenGL及Glut库编写程序绘制二维数学曲线。
4. 编写的一个要求程序中显式地使用后面的OpenGL函数:gluOrtho2D或gluPerspective、gluLookAT、glViewport;
三、 实验原理
该实验基于OpenGL编写的图形绘制程序基本综合了图形绘制流程各阶段涉及的主要图形学算法及原理, 所以我们设置一个因子factor,把所有的坐标值等比例缩小,这样就可以画出更多个正弦周期。
程序代码如下:
#include
#include
const GLfloat factor = 0.1f;
void myDisplay(void)
{
GLfloat x;
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);