计算机图形学试验指导书[1]

上传人:F****n 文档编号:99699255 上传时间:2019-09-20 格式:DOC 页数:59 大小:8.05MB
返回 下载 相关 举报
计算机图形学试验指导书[1]_第1页
第1页 / 共59页
计算机图形学试验指导书[1]_第2页
第2页 / 共59页
计算机图形学试验指导书[1]_第3页
第3页 / 共59页
计算机图形学试验指导书[1]_第4页
第4页 / 共59页
计算机图形学试验指导书[1]_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《计算机图形学试验指导书[1]》由会员分享,可在线阅读,更多相关《计算机图形学试验指导书[1](59页珍藏版)》请在金锄头文库上搜索。

1、计算机图形学计算机图形学 实实 验验 指指 导导 书书 Ver 2.0 傅由甲 卢宇 编 重庆理工大学计算机科学与工程学院重庆理工大学计算机科学与工程学院 2008 年 10 月 I 目目 录录 目目 录录I 1 1 OPENGLOPENGL 与三维图形与三维图形 1 1.1 OPENGL 介绍1 1.2 OPENGL 函数的语法3 1.3 OPENGL 是状态机4 1.4 OPENGL 相关的函数库4 1.5 OPENGL 的缓冲区4 2 2 MICROSOFTMICROSOFT VISUALVISUAL C+C+ 6.06.0 MFCMFC 编程基础编程基础 6 2.1 MFC 事件驱动简

2、介.6 2.2 MFC 事件驱动编程.6 2.3 在 VC 下实现 OPENGL 程序的编译.12 实验实验 1 WINDOWS 操作系统图形开发基础操作系统图形开发基础.13 一、实验要求和目的.13 二、相关知识提要.13 三、实验内容及步骤.15 四、实验习题.18 实验实验 2 基本光栅图形生成基本光栅图形生成 19 一、实验要求和目的.19 二、相关知识提要.19 三、实验内容及题目.22 实验实验 3 图形变换图形变换 24 一、实验要求和目的.24 二、相关知识提要.24 三、实验内容及步骤.26 四、实验习题.27 实验四实验四 交互式绘图技术交互式绘图技术 .28 一、实验要

3、求和目的.28 二、实验内容及步骤.28 三、实验习题.33 实验五实验五 光照处理光照处理 .34 一、实验要求和目的.34 二、相关知识提要.34 三、实验内容及步骤.37 四、实验习题.40 II 实验六实验六 纹理映射纹理映射 .41 一、实验要求和目的.41 二、相关知识提要.41 三、实验内容及步骤.44 四、实验习题.45 实验七实验七 曲面生成曲面生成 .46 一、实验要求和目的.46 二、相关知识提要.46 三、实验内容及步骤.49 四、实验习题.54 实验八实验八 综合实验(供优秀学生选做)综合实验(供优秀学生选做) .55 一、实验要求和目的.55 二、实验内容.55 三

4、、实验步骤.55 1 1 OpenGL 与三维图形 1.1 OpenGL 介绍 我们生活在一个充满三维物体的三维世界中,为了使计算机能精确地再现这些物体, 必须能在三维空间描绘这些物体。最近几年计算机图形学的发展使得三维表现技术得以形 成,这些三维表现技术使我们能够再现三维世界中的物体,能够用三维形体来表示复杂的 信息,这种技术就是可视化(Visualization) 技术。OpenGL 已被认为是高性能图形和交互 式视景处理的标准,目前包括 ATT 公司 UNIX 软件实验室、IBM 公司、DEC 公司、SUN 公司、 HP 公司、Microsoft 公司和 SGI 公司在内的几家在计算机市

5、场占领导地位的大公司都采用 了 OpenGL 图形标准。值得一提的是,由于 Microsoft 公司在 Windows NT、Windows97 及后 续版本中提供 OpenGL 图形标准,OpenGL 在微机中广泛应用,人们可以在微机上实现三维 图形应用,如 CAD 设计、仿真模拟、三维游戏等。 OpenGL 实际上是一种图形与硬件的接口。它包括了 100 多个图形函数,开发者可以用 这些函数来建立三维模型和进行三维实时交互。为了实现一个完整功能的图形处理系统, 设计一个与 OpenGL 相关的系统结构为:其最底层是图形硬件,第二层为操作系统,第三层 为窗口系统,第四层为 OpenGL,第五

6、层为应用软件。 由于许多在计算机界具有领导地位的计算机公司纷纷采用 OpenGL 作为三维图形应用 程序设计界面,OpenGL 应用程序具有广泛的移植性。因此,OpenGL 已成为目前的三维图形 开发标准,是从事三维图形开发工作的技术人员所必须掌握的开发工具。 OpenGL 作为一个与硬件独立的图形接口,它不提供与硬件密切相关的设备操作函数, 同时,它也不提供描述类似于飞机、汽车、分子形状等复杂形体的图形操作函数。用户必 须从点、线、面等最基本的图形单元开始构造自己的三维模型。 OpenGL 提供了以下的对三维物体的绘制方式: (1)线框绘图方式(wireframe)-这种方式仅绘制三维物体的

7、网格轮廓线; (2)深度优先线框绘图方式(depth_cued)-用线框方式绘图,增加模拟人眼看物体 一样的效果,远处的物体比近处的物体要暗些; (3)反走样线框绘图方式(antialiased)-用线框方式绘图,绘图时采用反走样技 术以减少图形线条的参差不齐; (4)平面消隐绘图方式(flat_shade)-对模型的隐藏面进行消隐,对模型的平面单 元按光照程度进行着色但不进行光滑处理; (5)光滑消隐绘图方式(smooth_shade)-对模型进行消隐按光照渲染着色的过程中 再进行光滑处理,这种方式更接近于现实; (6)加阴影和纹理的绘图方式(shadows,textures)-在模型表面贴

8、上纹理甚至于 加上光照阴影,使得三维景观象照片一样; (7)运动模糊的绘图方式(motion-blured)-模拟物体运动时人眼观察所感觉的动 感现象; (8)大气环境效果(atmosphere-effects)-在三维景观中加入如雾等大气环境效果, 使人身临其境; (9)深度域效果(depth-of-effects)-类似于照相机镜头效果,模型在聚焦点处清 晰,反之则模糊。 2 整个 OpenGL 的基本工作流程如下图 几何顶点数据 显示列表 评价器 逐个顶点操作 和图元组装 纹理映射 光栅化片元操作帧缓冲区 像素数据像素操作 图 1-1 OpenGL 基本工作流程 其中几何顶点数据包括模型

9、的顶点集、线集、多边形集,这些数据经过流程图的上部, 包括运算器、逐个顶点操作等;像素数据包括像素集、影像集、位图集等,像素数据的处 理方式与几何顶点数据的处理方式是不同的,但它们都经过光栅化、逐个片元(Fragment) 处理直至把最后的光栅数据写入帧缓冲器。在 OpenGL 中的所有数据包括几何顶点数据和像 素数据都可以被存储在显示列表中或者立即可以得到处理。 OpenGL 要求把所有的几何图形单元都用顶点来描述,这样运算器和逐个顶点计算操作 都可以针对每个顶点进行计算和操作,然后进行光栅化形成图形片元;对于像素数据,像 素操作结果被存储在纹理组装用的内存中,再象几何顶点操作一样光栅化形成

10、图形片元。 整个流程操作的最后,图形片元都要进行一系列的逐个片元操作,这样最后的像素值 被送入帧缓冲器实现图形的显示。 在 OpenGL 中进行主要的图形操作直至在计算机屏幕上渲染绘制出三维图形景观的基 本步骤为: (1)根据基本图形单元建立景物模型,并且对所建立的模型进行数学描述(OpenGL 中把点、线、多边形、图像和位图都作为基本图形单元) ; (2)把景物模型放在三维空间中的合适的位置,并且设置视点(viewpoint)以观察 所感兴趣的景观; (3)计算模型中所有物体的色彩,其中的色彩根据应用要求来确定,同时确定光照 条件、纹理粘贴方式等; (4)把景物模型的数学描述及其色彩信息转换

11、至计算机屏幕上的像素,这个过程也 就是光栅化(rasterization)。 在这些步骤的执行过程中,OpenGL 可能执行其他的一些操作,例如自动消隐处理等。 另外,景物光栅化之后被送入帧缓冲器之前还可以根据需要对像素数据进行操作。 OpenGL 能够对整个三维模型进行渲染着色,从而绘制出与客观世界十分类似的三维景 象。另外 OpenGL 还可以进行三维交互、动作模拟等。具体的功能主要有以下这些内容。 (1)模型绘制 OpenGL 能够绘制点、线和多边形。应用这些基本的形体,可以构造出几乎所有的三维 模型。OpenGL 通常用模型的多边形的顶点来描述三维模型。 (2)模型观察 在建立了三维景

12、物模型后,就需要用 OpenGL 描述如何观察所建立的三维模型。观察 三维模型是通过一系列的坐标变换进行的。模型的坐标变换使观察者能够在视点位置观察 与视点相适应的三维模型景观。在整个三维模型的观察过程中,投影变换的类型决定观察 3 三维模型的观察方式,不同的投影变换得到的三维模型的景象也是不同的。最后的视窗变 换则对模型的景象进行裁剪缩放,即决定整个三维模型在屏幕上的图像。 (3)颜色模式的指定 OpenGL 应用了一些专门的函数来指定三维模型的颜色。程序开发者可以选择二个颜色 模式,即 RGBA 模式和颜色表模式。在 RGBA 模式中,颜色直接由 RGB 值来指定;在颜色表 模式中,颜色值

13、则由颜色表中的一个颜色索引值来指定。开发者还可以选择平面着色和光 滑着色二种着色方式对整个三维景观进行着色。 (4)光照应用 用 OpenGL 绘制的三维模型必须加上光照才能更加与客观物体相似。OpenGL 提供了管 理四种光(自发光、环境光、镜面光和漫反射光)的方法,另外还可以指定模型表面的反射 特性。 (5)图像效果增强 OpenGL 提供了一系列的增强三维景观的图像效果的函数,这些函数通过反走样、混合 和雾化来增强图像的效果。反走样用于改善图像中线段图形的锯齿而更平滑,混合用于处 理模型的半透明效果,雾使得影像从视点到远处逐渐褪色,更接近于真实。 (6)位图和图像处理 OpenGL 还提

14、供了专门对位图和图像进行操作的函数。 (7)纹理映射 三维景物因缺少景物的具体细节而显得不够真实,为了更加逼真地表现三维景物, OpenGL 提供了纹理映射的功能。OpenGL 提供的一系列纹理映射函数使得开发者可以十分方 便地把真实图像贴到景物的多边形上,从而可以在视窗内绘制逼真的三维景观。 (8)实时动画 为了获得平滑的动画效果,需要先在内存中生成下一幅图像,然后把已经生成的图像 从内存拷贝到屏幕上,这就是 OpenGL 的双存技术(double buffer)。OpenGL 提供了双缓存 技术的一系列函数。 (9)交互技术 目前有许多图形应用需要人机交互,OpenGL 提供了方便的三维图

15、形人机交互接口,用 户可以选择修改三维景观中的物体。 1.2 OpenGL 函数的语法 OpenGL 函数以“gl”为前缀,并把组成函数名的每个单词的首字母进行大写 (glClearColor()) 。类似地,OpenGL 还定义了以前缀 GL_开头的常量,所有单词使用大写 形式,并以下划线分割(例如 GL_COLOR_BUFFER_BIT) 。此外,有些函数,同一函数有 多个不同版本,如 glColor3f(),glColor3ub(),glColor3bv()等都用于设置当前绘图颜色,其 中“3”表示函数接受 3 个参数, “f”表示参数类型为浮点数, “ub”表示参数类型为 8 位 无符

16、号整数, “bv”表示参数是含 3 个元素的数组,数组中每个元素为 8 位无符号整数。 OpenGL 为同一函数定义不同参数类型的版本主要为了方便用户根据自己的数据格式向 OpenGL 传递参数。 表 1-1 列出用于指定数据类型的后缀字母,以供参考: 后缀数据类型对应典型 C 语言OpenGL 类型定义 b8 位整数signed charGLbyte s16 位整数shortGLshort 4 i32 位整数int 或 longGLint, GLsizei f32 位浮点数floatGLfloat, GLclampf d64 位浮点数doubleGLdouble, GLclampd ub8 位无符号整数unsigned charGLubyte, GLboolean us16 位无符号整数unsigned shortGLushort ui32 位无符号整数unsigned int 或 unsigned longGLuint, GLenum, GLbitfield 1.3 OpenGL 是状态机 OpenGL 是个状态机。设置它的各种状态(或模

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号