第三章 OpenGL编程基础

上传人:我*** 文档编号:137853653 上传时间:2020-07-12 格式:PPT 页数:42 大小:610.50KB
返回 下载 相关 举报
第三章 OpenGL编程基础_第1页
第1页 / 共42页
第三章 OpenGL编程基础_第2页
第2页 / 共42页
第三章 OpenGL编程基础_第3页
第3页 / 共42页
第三章 OpenGL编程基础_第4页
第4页 / 共42页
第三章 OpenGL编程基础_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《第三章 OpenGL编程基础》由会员分享,可在线阅读,更多相关《第三章 OpenGL编程基础(42页珍藏版)》请在金锄头文库上搜索。

1、,第三章,OpenGL编程基础,OpenGL 编程基础,第三章 - 2,内容,OpenGL简介 OpenGL API层次图 OpenGL核心库 OpenGL实用程序库 OpenGL系统扩展库 OpenGL实用程序工具库 OpenGL图形编程环境设置 OpenGL编程示例,OpenGL 简介,OpenGL(Open Graphics Library),源于美国SGI公司为其图形工作站开发的IRIS GL,在跨平台移植过程中发展成为OpenGL,现在OpenGL被认为是高性能图形和交互式视景处理的标准。 http:/www.opengl.org/ SGI在1992年7月发布1.0版,后成为工业标准

2、,由成立于1992年的独立财团OpenGL Architecture Review Board (ARB)控制。 1995年12月ARB批准了1.1版本。 1999年5月通过的1.2.1。 2004年7月28日正式发布OpenGL 1.5。,OpenGL 编程基础,3,OpenGL 简介,关于OpenGL 1.5的应用,这些公司在一个联合声明中是这样阐述的:“可以实时地以电影画质渲染出轰动今夏的任何一部巨片中的计算机图形场景,而不用花上几个月去制作。汽车设计师可以设计出与照片别无二致的汽车造型;而喷气式战斗机的训练模拟则不但好看,而且精确到无法辨认出模拟场景与实物的区别。” OpenGL被设计

3、成独立于硬件,独立于窗口系统,在运行各种操作系统的各种计算机上都可用,并能在网络环境下以客户/服务器模式工作,是专业图形处理、科学计算等高端应用领域的标准图形库。,OpenGL 编程基础,4,OpenGL 简介,OpenGL / DirectX(Direct3D) OpenGL扩展(OpenGL Extensions) 显卡的发展速度比OpenGL版本更新速度快得多。 硬件厂商开发出一个新功能,可以针对新功能开发OpenGL扩展,软件开发人员通过这个扩展就可以使用新的硬件功能。 GL_ARB_multitexture(.); 一些常用的OpenGL扩展会在新版的OpenGL中加到OpenGL核

4、心中去,成为OpenGL标准的一部分,可以简化程序开发,程序员使用这些功能时不必做繁琐的扩展初始化工作。 Direct3D则没有扩展机制,硬件的新功能要等到微软发布新版DirectX后才可能支持。,OpenGL 编程基础,5,OpenGL 简介,OpenGL可以运行在当前各种流行操作系统之上,如Mac OS、Unix、Windows 95/98、Windows NT/2000、Linux、OPENStep、Python、BeOS等。 各种流行的编程语言都可以调用OpenGL中的库函数,如C、C+、Fortran、Ada、Java。 目前,Microsoft公司、SGI公司、ATT公司的Unix

5、软件实验室、IBM公司、DEC公司、SUN公司、HP公司等几家在计算机市场占主导地位的大公司都采用了OpenGL图形标准。 因此,OpenGL已成为目前的三维图形开发事实上的标准。,OpenGL 编程基础,6,OpenGL的基本特点,1.工业标准 OARB(OpenGL Architecture Review Board)联合会领导OpenGL技术规范的发展,OpenGL有广泛的支持,它是业界唯一的真正开放的、跨平台的图形标准。 2.可靠度高 OpenGL应用可以运行在支持OpenGL API标准的任何硬件上。 3.可扩展性 OpenGL是低级的图形API,它具有充分的可扩展性。 OpenGL

6、能紧跟最新硬件发展和计算机图形绘制算法的发展。成功的OpenGL扩展会被融入在未来的OpenGL版本之中。,OpenGL 编程基础,7,OpenGL的基本特点,4.可伸缩性 基于OpenGL API的图形应用程序可以运行在许多系统上,包括各种用户电子设备、PC、工作站以及超级计算机。 5.容易使用 OpenGL的核心图形函数功能强大,带有很多可选参数,这使得源程序显得非常紧凑; OpenGL可以利用已有的其它格式的数据源进行三维物体建模,大大提高了软件开发效率; 采用OpenGL技术,开发人员几乎可以不用了解硬件的相关细节,便可以利用OpenGL开发照片质量的图形应用程序。,OpenGL 编程

7、基础,8,OpenGL的基本功能,1.模型绘制 真实世界里的任何物体都可以在计算机中用简单的点、线、多边形来描述。OpenGL提供了丰富的基本图元绘制命令,从而可以方便地绘制物体。 2.模型观察 无论多复杂的图形都是由基本图元组成并经过一系列变换来实现的。OpenGL提供了一系列基本的变换,如模型变换、观察变换、投影变换及窗口-视口变换。 3.颜色模式 OpenGL提供了两种物体着色模式,一种是RGBA颜色模式,另一种是颜色索引模式。,OpenGL 编程基础,9,OpenGL的基本功能,4.光照处理 OpenGL提供管理4种光(辐射光、环境光、镜面光、漫反射光)的方法;还可以指定模型表面的反射

8、特性; 5.图像效果增强 提供了点、线、多边形的反走样技术; 为了使三维图形更加具有真实感,经常需要处理半透明或透明的物体图像,这就需要用到融合技术。 OpenGL提供了“fog”的基本操作来达到对场景进行雾化的效果。 6.位图和图像处理,OpenGL 编程基础,10,OpenGL的基本功能,7.纹理映射 纹理映射可以理解为将纹理粘贴在所绘制的三维模型表面,以使三维图形显得更生动。 8.动画 OpenGL提供了双缓存区(Double Buffer)技术来实现动画绘制。 9.交互技术 OpenGL提供了方便的三维人机交互接口。,OpenGL 编程基础,11,OpenGL体系结构,OpenGL 编

9、程基础,12,基于OpenGL的二次开发软件,Open Performer、Open Inventor、WTK、Vega等第三方软件,主要用于虚拟现实、视景仿真等领域。,Graphics Hardware,OpenGL,Performer Run-Time API,Simulator Application,OpenGL 编程基础,13,OpenGL与第三方软件,OpenGL 编程基础,14,OpenGL是图形 API,OpenGl是应用程序与图形硬件的接口。 OpenGL的核心库提供了100多个用于直接访问图形硬件的底端函数(以 gl 开头)。,OpenGL 编程基础,15,OpenGL A

10、PI层次图,OpenGL 编程基础,16,OpenGL库函数,Windows下常用的OpenGL库有两种,MS实现和SGI实现。两者都是由三大部分组成: 1.函数的说明文件 gl.h、glu.h、glut.h 2.静态链接库文件 opengl32.lib、glu32.lib、glut32.lib 3.动态链接库文件 opengl32.dll、glu32.dll、和glut32.dll SGI的版本是纯软件实现,不能利用硬件加速并且SGI已经在1999年宣布停止支持。,OpenGL 编程基础,17,OpenGL库函数,MS实现 从Win95 OSR2开始,微软操作系统已捆绑OpenGL32.DL

11、L; OpenGL32.dll是微软的OpenGL 1.1纯软件实现,我们的程序都要动态链接到这个dll。 相应的头文件和库文件都包含于Win32 Platform SDK; 微软的OpenGL32.DLL自动实现硬件加速驱动 HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionOpenGLDrivers,OpenGL 编程基础,18,如何实现OpenGL硬件加速?,如果安装3D芯片厂商的驱动程序,会将一个不同名字的dll放到Windows系统目录下; 比如在Windows 2000下安装nVIDIA GeForce2 MX的驱

12、动程序(必须安装驱动,因为Windows自带的显卡驱动程序并不会提供OpenGL硬件加速能力),会在系统目录下放一个nvoglnt.dll(这就是nVIDIA的OpenGL驱动),并在注册表中登记nvoglnt.dll,让Windows知道硬件加速OpenGL驱动的名字,以后运行OpenGL程序,OpenGL32.dll就会把OpenGL调用直接转到nvoglnt.dll。,OpenGL 编程基础,19,OpenGL核心库,包含有115个函数,函数名的前缀为gl; 这部分函数用于常规的、核心的图形处理。 由于许多函数可以接收不同数据类型的参数,因此派生出来的函数原形多达300多个。,OpenG

13、L 编程基础,20,OpenGL实用程序库,OpenGL Utility Library(GLU) 是对OpenGL核心库的扩充,是其中的一部分。主要用于简化一些常用的任务:例如二次曲面的绘制(球体、锥体、圆柱体等),可进一步进行纹理映射、坐标变换、多边形区域剖分。 GLU 函数名使用前缀 glu gluLookAt( ); ,OpenGL 编程基础,21,OpenGL系统扩展库,OpenGL独立于各种操作系统和窗口系统。 每个窗口系统都有自己的函数库,用来扩充本身的功能,以便支持OpenGL图形绘制 X Window System - GLX Microsoft Windows - WGL

14、Apple Macintosh -AGL IBM OS/2 - PGL,OpenGL 编程基础,22,OpenGL实用程序工具库,The OpenGL Utility Toolkit (GLUT) GLUT是Mark Kilgard在SGI时写的一个免费的独立于窗口系统的实用程序工具库 可以在网上下载最新版本的GLUT Win32: Linux: http:/www.mesa3d.org GLUT库已经作为AUX库(OpenGL的辅助库)的功能更强的替代品了; GLUT库包括了使用弹出菜单、管理窗口、支持鼠标、键盘,甚至是游戏杆的支持; GLUT库函数使用前缀 glut glutCreateW

15、indow(); ,OpenGL 编程基础,23,OpenGL数据类型,OpenGL 编程基础,24,OpenGL函数命名约定,OpenGL常量名使用前缀:GL_ 或 GLUT_ OpenGL函数命名约定:,有些OpenGL函数最后带一个字母v,表示函数参数数组指针。 glColor3f(1.0,0.0,0.0); 等价于: float color_array=1.0,0.0,0.0; glColor3fv(color_array);,OpenGL 编程基础,25,如何编译 (VC6.0),Microsoft Visual C+ 6.0 使用Win32 Console Application创

16、建新项目; 打开Project Settings对话框,在该对话框的Link/Objects/library modules内加入opengl32.lib glu32.lib glut32.lib 开始写OpenGl程序代码 编译程序,OpenGL 编程基础,26,编程环境设置 (GLUT),Microsoft Visual C+ 6.0 将 glut.h 放在文件夹/include/GL/ 将 glut.lib放在文件夹/lib/ 将 glut32.dll放在文件夹/System32/ Microsoft Visual C+ .NET 将 glut.h 放在文件夹/platformSDK/include/GL/ 将 glut.lib放在文件夹/platformSDK/lib/ 将 glut32.dll放在文件夹/System32,OpenGL 编程基础,27,OpenGL示例-1,OpenGL 编程基础,28,OpenGL示例-1,#include #include / Called to draw scene void Rende

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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