汪老师课件9openGLintro

上传人:E**** 文档编号:91057516 上传时间:2019-06-21 格式:PPT 页数:100 大小:742.50KB
返回 下载 相关 举报
汪老师课件9openGLintro_第1页
第1页 / 共100页
汪老师课件9openGLintro_第2页
第2页 / 共100页
汪老师课件9openGLintro_第3页
第3页 / 共100页
汪老师课件9openGLintro_第4页
第4页 / 共100页
汪老师课件9openGLintro_第5页
第5页 / 共100页
点击查看更多>>
资源描述

《汪老师课件9openGLintro》由会员分享,可在线阅读,更多相关《汪老师课件9openGLintro(100页珍藏版)》请在金锄头文库上搜索。

1、OpenGL三维图形编程,2019/6/21,OpenGL概述,OpenGL发展历史 OpenGL基本特点 OpenGL与DirectX OpenGL基本功能 OpenGL语法特点 OpenGL状态机制,OpenGL渲染流水线 OpenGL相关函数库 使用GLUT函数库 使用WGL函数库 OpenGL相关资源,建立OpenGL中的重要概念,2019/6/21,OpenGL发展历史(18),在研究三维图形的过程中,人们开发了各种图形工具库(软件包,即一系列函数的集合) 第一个图形软件包:图形核心系统,GKS ISO(国际标准化组织)和ANSI(美国标准化所)标准:层次结构交互图形系统,PHIGS

2、,扩充后形成PHIGS SGI的图形库:GL,扩充后形成OpenGL,实际上的图形工业标准 ,2019/6/21,OpenGL发展历史(28),OpenGL(开放性图形库Open Graphics Library)标准 GL:美国SGI公司为图形工作站开发的一种功能强大的三维图形机制 经过长期发展,在跨平台移植的过程中,由GL扩充形成 背靠SGI 公司,技术实力强大 研发资金充盈,由成立于1992年的独立财团OpenGL Architecture Review Board (OARB)控制,2019/6/21,OpenGL发展历史(38),OpenGL标准 由SGI等OARB成员以投票方式产生

3、标准 OARB公布规范文档(Specification),各软硬件厂商据此开发自己系统上的实现 只有通过了OARB规范全部测试的实现才能称为OpenGL,2019/6/21,OpenGL发展历史(48),OpenGL标准 1.0版,1992年7月 1.1版,1995年12月 1.2版,1998年3月 1.2.1版,1998年10月 1.3版,2001年8月 1.4版,2002年7月 1.5版,2003年7月 4.5版,目前发布的最新版本,2019/6/21,OpenGL发展历史(58),OpenGL成为高性能图形和交互式视景处理的工业标准 SGI、IBM、DEC、SUN、HP等大型硬件厂商都采

4、用OpenGL作为三维图形标准 动画软件Soft Image、动画软件3D Studio MAX、仿真软件Open Inventor、VR(虚拟现实)软件World Tool Kit、CAM(计算机辅助制造)ProEngineer、GIS(地理信息系统)软件ARC/INFO等软件的制造厂商都以OpenGL为基础进行开发,2019/6/21,OpenGL发展历史(68),OpenGL成为高性能图形和交互式视景处理的工业标准 NVIDIA、ATI等显卡制造商支持OpenGL标准 Windows系列、Linux、Unix、OS/2等各平台都提供对OpenGL的支持,2019/6/21,OpenGL发

5、展历史(78),OpenGL的普及应用 计算机硬件性能的提高和OpenGL本身的不断发展,使得OpenGL不再只属于专用图形工作站 开发人员可以在各种硬件平台利用OpenGL进行图形软件开发 进行图形开发实践的必备工具,2019/6/21,OpenGL发展历史(88),OpenGL并不是唯一 OpenGL是一个相当流行的高性能图形处理标准,但并不是唯一的图形处理开发包 世界上还存在比OpenGL更优秀、更专业(功能专一,且纯粹)的开发包,也许并不是标准,但应用于一些超高端的、更专业的图形工作站,服务于一些特定应用(电影制作、游戏等等),2019/6/21,OpenGL基本特点(13),跨平台的

6、工业标准 标准支持灵活 各平台开发商可以自由地开发适合于各自系统的OpenGL执行实例 OpenGL功能可由特定的硬件实现,也可用纯软件例程实现,或者以软硬件结合的方式实现,只要支持标准即可,2019/6/21,OpenGL基本特点(23),运行稳定,容易使用 只要硬件支持OpenGL标准即可使用 屏蔽硬件细节 具有良好的伸缩性 基于OpenGL API的图形应用程序可以运行在许多系统上,包括各种用户电子设备、PC、工作站以及超级计算机,2019/6/21,OpenGL基本特点(33),具有良好的扩展性 OpenGL标准提供了一套良好的功能扩充机制 硬件升级后,可以遵循OpenGL扩展机制提供

7、相应的OpenGL函数 一个成功的OpenGL扩展会被融入在未来的OpenGL版本之中 因此,OpenGL能紧跟最新硬件发展和计算机图形绘制算法的发展,2019/6/21,OpenGL与DirectX(15),DirectX简介 DirectX是Microsoft公司开发的底层应用程序接口,用于Windows平台下游戏软件和多媒体系统的开发 DirectX库采用COM组件思想设计,提供二进制级的组件接口,2019/6/21,OpenGL与DirectX(25),DirectX简介 DirectX提供多媒体程序开发所需的全面的API支持 图形,DirectX Graphics 声音,Direct

8、Sound,DirectMusic 交互,DirectInput 多人网络游戏,DirectPlay 流媒体,DirectShow 现在DirectX的稳定版本是8.0和9.0,2019/6/21,OpenGL与DirectX(35),OpenGL与DirectX的相同点 在图形绘制部分,基于相同的计算机图形学原理实现 提供绘制能力相当的图形绘制API(现在Windows平台上常用的OpenGL库,也是Microsoft依据OpenGL标准实现的),2019/6/21,OpenGL与DirectX(45),OpenGL与DirectX的不同点 OpenGL是跨平台标准,且有各个平台的实现;Di

9、rectX仅仅应用于Windows,由Microsoft独立开发 OpenGL仅仅提供图形绘制功能,甚至没有交互功能;DirectX则提供了多媒体程序开发所需的全部API OpenGL是函数库;DirectX则是组件库 OpenGL各版本向后兼容;DirectX的体系结构则在不停变化,并不向后兼容,2019/6/21,OpenGL与DirectX(55),目前应用 一般显卡厂商都支持OpenGL和DirectX,同时针对两者进行硬件优化 教学、科研方面OpenGL是主流,游戏开发、商业应用则基本采用DirectX 需要跨平台应用时,只能用OpenGL,2019/6/21,OpenGL基本功能(

10、111),物体建模与图元(Primitive)绘制 矩阵变换 颜色管理 光照和材质 纹理映射(Texture mapping) 反走样(Antialiasing) 图像特效 双缓存(Double buffering)动画,2019/6/21,OpenGL基本功能(211),物体建模与图元(Primitive)绘制 OpenGL认为,所有的物体都是由点、线、多边形构成的,点、线、多边形被称为图元(Primitive) OpenGL一共定义了十种图元(Primitive),2019/6/21,OpenGL基本功能(311),物体建模与图元(Primitive)绘制,2019/6/21,OpenGL

11、基本功能(411),物体建模与图元(Primitive)绘制 物体建模的意思就是将物体用图元(Primitive)表示,由于三点决定一个平面,所以物体常用三角面片来表示,三角面片越多,物体越复杂 OpenGL提供了各种图元的绘制函数,以及一些复杂三维物体(球、锥、多面体、茶壶)、曲线曲面(贝塞尔、NURBS)的绘制函数,2019/6/21,OpenGL基本功能(511),矩阵变换 无论多复杂的图形都是由基本图元组成并经过一系列变换来实现的 OpenGL提供四种基本变换:平移、旋转、按比例缩放、镜像 OpenGL提供两种投影变换:平行投影(正射投影)、透视投影,2019/6/21,OpenGL基

12、本功能(611),颜色管理 OpenGL提供了两种颜色模式:RGBA模式,颜色索引模式(Color index) RGBA模式为每个像素点指定颜色,可提供丰富多彩的色彩效果,其中A是混合因子,用于各种特效处理 对于显示能力不足的硬件,可采用颜色索引模式,系统提供一个颜色表,通常有256或4096种颜色,各像素点通过索引颜色表项得到颜色值,2019/6/21,OpenGL基本功能(711),光照和材质 在现实生活中,物体因为受光照射和自身对各种频率光波的吸收与反射能力的不同,而呈现各自不同的颜色 OpenGL的实现 假设光仅仅由三原色(RGB)组成 物体对三原色分别有不同的反射率(即材质) 利用

13、物理光学模型,计算物体实际的颜色,2019/6/21,OpenGL基本功能(811),纹理映射(Texture mapping) 由于物体采用图元(Primitive)表示(点、线、多边形),绘制时,有效渲染的地方也仅仅是这些点、线、多边形,其它位置的颜色值则通过插值实现,这就造成了物体绘制的不真实 纹理映射通过贴图的方式,为物体表面贴上真实的色彩花纹,这些被指定贴上的图片,就称作纹理(Texture) OpenGL提供了完善的纹理映射机制,2019/6/21,OpenGL基本功能(911),反走样(Antialiasing) 线段在计算机中是通过一系列的像素来近似逼近的,而这些像素实际上是一

14、个个的小正方形,因此线段常常呈锯齿状,这被称为走样(Aliasing) OpenGL通过计算线段对各个像素的不同覆盖率来实现反走样(Antialiasing),2019/6/21,OpenGL基本功能(1011),图像特效 融合(Blending) 为了使三维图形更加具有真实感,经常需要处理半透明或透明的物体图像,这就需要用到融合技术 雾(fog) 正如自然界中存在烟雾一样,OpenGL提供了“fog“的基本操作来达到对场景进行雾化的效果,2019/6/21,OpenGL基本功能(1111),双缓存(Double buffering)动画 出色的动画效果是OpenGL的一大特色 OpenGL通

15、过双缓存实现动画 前台缓存显示当前帧 后台缓存同时进行后续帧的场景计算,生成画面,2019/6/21,OpenGL语法特点(15),所有OpenGL函数都使用“gl”作为前缀 如 glClearColor() 所有OpenGl常量都使用“GL_”开头,并且所有字母都大写 如 GL_FALSE,2019/6/21,OpenGL语法特点(25),OpenGL函数后缀说明 后缀中的阿拉伯数字一般表示参数的数目 如 glVertex2i(1, 3),表示该函数有两个参数 阿拉伯数字后的小写字符(一个或多个)表示参数类型 如 glVertex2i(1, 3),表示该函数的两个参数都为32位整数(Inte

16、ger) 表示参数类型的后缀定义见下表,2019/6/21,OpenGL语法特点(35),OpenGL函数后缀说明,2019/6/21,OpenGL语法特点(45),OpenGL函数后缀说明 有些函数最后一个字母为“v”,则表示该函数参数为向量(Vector),即数组 此时,前面的阿拉伯数字表示可接受向量(数组)的长度 如 glColor3f(color_array),表示color_array为一数组,该数组有三个元素,每个元素的类型都为32位浮点数(Float),2019/6/21,OpenGL语法特点(55),OpenGL数据类型 开发OpenGL程序时,为便于程序移植,最好使用OpenGL的数据类型定义 例如,尽量使用“GLint”,而不是用C或C+的“int”,2019/6/21,OpenGL状态机制(12),OpenGL是一个状态机(State machine) 设置的状态将一直保持,直到显示改变 例如,调用 glColor3f(1.0, 1.0, 0.0) 设置当前颜色为黄色之后,除非再次调用 g

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

当前位置:首页 > 高等教育 > 大学课件

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