OpenGL三维图形编程基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OpenGL基本功能(2/11)
物体建模与图元(Primitive)绘制
OpenGL认为,所有的物体都是由点、线、多 边形构成的,点、线、多边形被称为图元 (Primitive)
OpenGL一共定义了十种图元(Primitive)
OpenGL基本功能(3/11)
物体建模与图元(Primitive)绘制
OpenGL基本特点(1/3)
跨平台的工业标准 标准支持灵活
各平台开发商可以自由地开发适合于各自系 统的OpenGL执行实例
OpenGL功能可由特定的硬件实现,也可用纯 软件例程实现,或者以软硬件结合的方式实 现,只要支持标准即可
OpenGL基本特点(2/3)
运行稳定,容易使用
2009年3月又公布了升级版新规范OpenGL 3.1,也是这套跨平台免费API有史以来的第九次更新。 OpenGL 3.1将此前引入的OpenGL着色语言“GLSL”从1.30版升级到了1.40版,通过改进程序增强 了对最新可编程图形硬件的访问,还有更高效的顶点处理、扩展的纹理功能、更弹性的缓冲管 理等等。
需要跨平台应用时,只能用OpenGL
OpenGL基本功能(1/11)
物体建模与图元(Primitive)绘制 矩阵变换 颜色管理 光照和材质 纹理映射(Texture mapping) 反走样(Antialiasing) 图像特效 双缓存(Double buffering)动画
开发人员可以在各种硬件平台利用OpenGL进 行图形软件开发
进行图形开发实践的必备工具
OpenGL发展历史(8/8)
OpenGL并不是唯一
OpenGL是一个相当流行的高性能图形处理标 准,但并不是唯一的图形处理开发包
世界上还存在比OpenGL更优秀、更专业(功 能专一,且纯粹)的开发包,也许并不是标 准,但应用于一些超高端的、更专业的图形 工作站,服务于一些特定应用(电影制作、 游戏等等)
第一个图形软件包:图形核心系统,GKS ISO(国际标准化组织)和ANSI(美国标准化所)标
准:层次结构交互图形系统,PHIGS,扩充后形成 PHIGS+ SGI的图形库:GL,扩充后形成OpenGL,实际上的 图形工业标准 ……
OpenGL发展历史(2/8)
OpenGL(开放性图形库Open Graphics Library) 标准
OpenGL与DirectX(4/5)
OpenGL与DirectX的不同点
OpenGL是跨平台标准,且有各个平台的实现; DirectX仅仅应用于Windows,由Microsoft独立开发
OpenGL仅仅提供图形绘制功能,甚至没有交互功 能;DirectX则提供了多媒体程序开发所需的全部API
现在DirectX的稳定版本是8.0和9.0C 最新的DX10是只支持Vista平台和Win7平台
OpenGL与DirectX(3/5)
OpenGL与DirectX的相同点
在图形绘制部分,基于相同的计算机图形学 原理实现
提供绘制能力相当的图形绘制API(现在 Windows平台上常用的OpenGL库,也是 Microsoft依据OpenGL标准实现的)
OpenGL的实现
z 假设光仅仅由三原色(RGB)组成 z 物体对三原色分别有不同的反射率(即材质) z 利用物理光学模型,计算物体实际的颜色
OpenGL基本功能(8/11)
纹理映射(Texture mapping)
由于物体采用图元(Primitive)表示(点、线、多边 形),绘制时,有效渲染的地方也仅仅是这些点、线、 多边形,其它位置的颜色值则通过插值实现,这就造 成了物体绘制的不真实
OpenGL渲染流水线 OpenGL相关函数库 使用GLUT函数库 使用WGL函数库 OpenGL相关资源 作业
建立OpenGL中的重要概念
OpenGL发展历史(1/8)
一幅图胜过千言万语 在研究三维图形的过程中,人们开发了各种图
形工具库(软件包,即一系列函数的集合)
GL_LINES
GL_POINTS
GL_LINE_STRIP GL_LINE_LOOP
GL_POLYGON
GL_TRIANGLES
GL_TRIANGLE_STRIP
GL_QUADS GL_QUAD_STRIP
GL_TRIANGLE_FAN
OpenGL基本功能(4/11)
物体建模与图元(Primitive)绘制
物体建模的意思就是将物体用图元(Primitive) 表示,由于三点决定一个平面,所以物体常 用三角面片来表示,三角面片越多,物体越 复杂
OpenGL提供了各种图元的绘制函数,以及一 些复杂三维物体(球、锥、多面体、茶壶)、 曲线曲面(贝塞尔、NURBS)的绘制函数
OpenGL基本功能(5/11)
相应的OpenGL函数 一个成功的OpenGL扩展会被融入在未来的
OpenGL版本之中 因此,OpenGL能紧跟最新硬件发展和计算机
图形绘制算法的发展
OpenGL与DirectX(1/5)
DirectX简介
DirectX是Microsoft公司开发的底层应用程序 接口,用于Windows平台下游戏软件和多媒 体系统的开发
2009年8月Khronos小组发布了OpenGL 3.2,这是一年以来OpenGL进行的第三次重要升级。该版 本仍然延续了OpenGL发展的方向让图形程序开发者能在多种操作系统和平台下更好的利用新的 GPU功能。OpenGL3.2版本提升了性能表现、改进了视觉质量、提高了几何图形处理速度,而且 使Direct3D程序更容易移植为OpenGL。除OpenGL之外,Khronos还将其开发的其它标准进行了 协调改进,以求可以在更广泛的领域提供强大的图形功能和计算生态系统,这些标准包括用于 并行计算的OpenCL、用于移动3D图形开发的OpenGL ES和用于网络3D开发的WebGL。此后推 出了GLSL 1.5OpenGLShading Language(OpenGL着色语言)的升级版,以及在OpenGL3.2框架下 推出了两个新功能,可以让开发者在开发新程序时能够在使用流水线内核特性或兼容性特性之 间做出选择,其中兼容性特性会提供与旧版OpenGL之间的兼容性。
矩阵变换
无论多复杂的图形都是由基本图元组成并经 过一系列变换来实现的
OpenGL提供四种基本变换:平移、旋转、按 比例缩放、镜像
OpenGL提供两种投影变换:平行投影(正射 投影)、透视投影
OpenGL基本功能(6/11)
颜色管理
OpenGL提供了两种颜色模式:RGBA模式,颜色索 引模式(Color index)
opengl2.0支持OpenGL Shading Language、新的shader扩展特性以及其 他多项增强特性。
智能手机和Pocket PC的OpenGL ES 2.0版, 2007
补充
2008年8月初Khronos工作组在Siggraph 2008大会上宣布了OpenGL 3.0图形接口规范,GLSL1.30 shader语言和其他新增功能将再次未来开放3D接口发展指明方向。
OpenGL是函数库;DirectX则是组件库 OpenGL各版本向后兼容;DirectX的体系结构则在不
停变化,并不向后兼容
OpenGL与DirectX(5/5)
目前应用
一般显卡厂商都支持OpenGL和DirectX,同时 针对两者进行硬件优化
教学、科研方面OpenGL是主流,游戏开发、 商业应用则基本采用DirectX
GL:美国SGI公司为图形工作站开发的一种功能强大 的三维图形机制
经过长期发展,在跨平台移植的过程中,由GL扩充 形成
背靠SGI 公司,技术实力强大 研发资金充盈,由成立于1992年的独立财团OpenGL
Architecture Review Board (OARB)控制
OpenGL发展历史(3/8)
2010年刚刚推出了Opengl4.0版,特性待研究。
OpenGL发展历史(5/8)
OpenGL成为高性能图形和交互式视景处理的工 业标准
SGI、IBM、DEC、SUN、HP等大型硬件厂商都采用 OpenGL作为三维图形标准
动画软件Soft Image、动画软件3D Studio MAX、仿 真软件Open Inventor、VR(虚拟现实)软件World Tool Kit、CAM(计算机辅助制造)ProEngineer、 GIS(地理信息系统)软件ARC/INFO等软件的制造 厂商都以OpenGL为基础进行开发
RGBA模式为每个像素点指定颜色,可提供丰富多彩 的色彩效果,其中A是混合因子,用于各种特效处理
对于显示能力不足的硬件,可采用颜色索引模式,系 统提供一个颜色表,通常有256或4096种颜色,各像 素点通过索引颜色表项得到颜色值
OpenGL基本功能(7/11)
光照和材质
在现实生活中,物体因为受光照射和自身对 各种频率光波的吸收与反射能力的不同,而 呈现各自不同的颜色
OpenGL 3.0 API开发代号为Longs Peak,和以往一样,OpenGL 3.0仍然作为一个开放性和跨平台 的3D图形接口标准,在Shader语言盛行的今天,OGL3.0增加了新版本的shader语言:GLSL 1.30, 可以充分发挥当前可编程图形硬件的潜能。同时,OGL3.0还引入了一些新的功能,例如顶点矩 阵对象,全帧缓存对象功能,32bit浮点纹理和渲染缓存,基于阻塞队列的条件渲染,紧凑行半 浮点顶点和像素数据,四个新压缩机制等等。
只要硬件支持OpenGL标准即可使用 屏蔽硬件细节
具有良好的伸缩性
基于OpenGL API的图形应用程序可以运行在 许多系统上,包括各种用户电子设备、PC、 工作站以及超级计算机
OpenGL基本特点(3/3)
具有良好的扩展性
OpenGL标准提供了一套良好的功能扩充机制 硬件升级后,可以遵循OpenGL扩展机制提供
OpenGL发展历史(6/8)
OpenGL成为高性能图形和交互式视景处 理的工业标准
NVIDIA、ATI等显卡制造商支持OpenGL标准 Windows系列、Linux、Unix、OS/2等各平台
都提供对OpenGL的支持
OpenGL发展历史(7/8)
OpenGL的普及应用
计算机硬件性能的提高和OpenGL本身的不断 发展,使得OpenGL不再只属于专用图形工作 站
DirectX库采用COM组件思想设计,提供二进 制级的组件接口
OpenGL与DirectX(2/5)
DirectX简介
DirectX提供多媒体程序开发所需的全面的API支持
z 图形,DirectX Graphics z 声音,DirectSound,DirectMusic z 交互,DirectInput z 多人网络游戏,DirectPlay z 流媒体,DirectShow
OpenGL三维图形编程基础
OpenGL概述
主讲: 李胜
参考书
《OpenGL编程指南》,机械工业出版社,俗称 “OpenGL红宝书”
第三章 OpenGL概述
OpenGL发展历史 OpenGL基本特点 ห้องสมุดไป่ตู้OpenGL与DirectX OpenGL基本功能 OpenGL语法特点 OpenGL状态机制
OpenGL标准
由SGI等OARB成员以投票方式产生标准 OARB公布规范文档(Specification),各软
硬件厂商据此开发自己系统上的实现 只有通过了OARB规范全部测试的实现才能
称为OpenGL
OpenGL发展历史(4/8)
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月, 2.0版,2004年 OpenGL2.0版本发布 OpenGL 2.0标准的主要制订者是逐渐在ARB中占据主动地位的3Dlabs。