第三章OpenGL编程 中国斜学我术大草 University of Science and Technology of China 3.1 OpenGL简介 3.2完整的程序 3.3三维图形程序
第三章 OpenGL编程 3.1 OpenGL简介 3.2 完整的程序 3.3 三维图形程序 2
3.1 OpenGL简介 中国钟学技术大学 University of Science and Technology of China ·3.1.1图形API的发展 ·3.1.2 OpenGL的体系结构 ·3.1.3 OpenGL的函数 ·3.1.4一个简单例子 ·3.1.5安装编译说明
3.1 OpenGL简介 • 3.1.1 图形 API的发展 • 3.1.2 OpenGL的体系结构 • 3.1.3 OpenGL的函数 • 3.1.4 一个简单例子 • 3.1.5 安装编译说明 3
GKS(1980s) 中国斜学我术大草 University of Science and Technology of China ·FIPS(1973)组织了两个委员会建立图形 API的标准 -GKS(Graphical Kernel System) ·二维,同时包含很好的工作站模型 -Core:同时应用于二维和三维 -GKS成为ISO标准,稍后成为ANSl标准(1980s) ·GKS很难推广到三维(GKS-3D) 一远远落后于硬件的发展 IFIPS:Intemational Federation of Information Processing Societies
GKS(1980s) • IFIPS (1973) 组织了两个委员会建立图形 API的标准 – GKS(Graphical Kernel System) • 二维,同时包含很好的工作站模型 – Core: 同时应用于二维和三维 – GKS成为ISO标准,稍后成为ANSI标准(1980s) • GKS很难推广到三维(GKS-3D) – 远远落后于硬件的发展 IFIPS: International Federation of Information Processing Societies 4
PHIGS (1990s) 中国斜学我术大空 University of Science and Technology of China ·程序员层次交互式图形系统(Programmers Hierarchical Interactive Graphics System) -来自于CAD团体的3D图形API 一保留模式:绘制前在数据库里保存场景的层次结构 一基本几何图元和网格模型 一不支持光照 ·PHIGS+ -NURBS曲面 一支持光照,但不支持纹理 ·PHIGS和PHIGS+都是ANSI标准和ISO标准
PHIGS(1990s) • 程序员层次交互式图形系统 (Programmers Hierarchical Interactive Graphics System) – 来自于CAD团体的3D图形API – 保留模式:绘制前在数据库里保存场景的层次结构 – 基本几何图元和网格模型 – 不支持光照 • PHIGS+ – NURBS曲面 – 支持光照,但不支持纹理 • PHIGS和PHIGS+都是ANSI标准和ISO标准 5
PHIGS与X 中国斜草我术大草 University of Science and Technology of China ●X Window系统(也常称为X11或X)R7.6 一1984年DEC/MlT的雅典娜计划Data mCompany数糕设备公司 一图形用户界面(GU川)环境底层框架,硬件无关 -客户端-服务器(client-server)架构模型 -GNONE、KDE ●PEX(PHIGS Extension to X)把两者组合 一不易应用
PHIGS与X X Window系统(也常称为X11或X)R7.6 – 1984年 DEC/MIT的雅典娜计划Data Equipment Company 数据设备公司 – 图形用户界面(GUI)环境底层框架,硬件无关 – 客户端-服务器(client-server)架构模型 – GNONE、KDE PEX( PHIGS Extension to X )把两者组合 – 不易应用 6
IRIS GL 中国斜学我术大草 University of Science and Technology of Chin Silicon Graphics(SGI:1981-2006) -Stanford的Jim Clark博士带领7个研究生创办 -Geometry Engine(几何引擎):硬件VLSI)实现几何 流水线,极大改良了图形工作站 IRIS GL(Integrated Raster Imaging System Graphics Library) 一立即模式绘制 一可非常简单地设计出三维交互图形应用程序
IRIS GL • Silicon Graphics(SGI: 1981-2006) – Stanford的Jim Clark博士带领7个研究生创办 – Geometry Engine(几何引擎):硬件(VLSI)实现几何 流水线,极大改良了图形工作站 • IRIS GL(Integrated Raster Imaging System Graphics Library) – 立即模式绘制 – 可非常简单地设计出三维交互图形应用程序 7
Open GL 中国斜学我术大草 University of Science and Technology of China ·1992年SGl领导的OpenGL Architectural Review Board(OpenGL ARB)发布1.O版 -平台无关的API 一易于使用 一与硬件非常贴近,从而可以充分发挥其性能 -着重在于渲染(rendering) 一没有提供窗口和输入接口,从而避免依赖于具 体的窗口系统
OpenGL • 1992年 SGI领导的OpenGL Architectural Review Board(OpenGL ARB)发布1.0版 – 平台无关的API – 易于使用 – 与硬件非常贴近,从而可以充分发挥其性能 – 着重在于渲染 (rendering) – 没有提供窗口和输入接口,从而避免依赖于具 体的窗口系统 8
OpenGL的发展 中国斜学我术大学 University of Science and Technology of China ·早期是由ARB掌控其发展 -成员包括SGl,Microsoft,Nvidia,HP,3 DLabs, IBM,...... -相对稳定2.1(2006.7))/3.3(2010.3)/4.4(2013.7) 一发展反映了新的硬件能力 ·3D纹理映射和纹理对象(1.2,1998) ·顶,点着色器、片段着色器(2.0,2004) ·几何着色器(3.2,2009) Tessellator(4.1,2011) Compute Shader(4.3,2012) ·通过扩展支持平台相关的特性 ·2006年,ARB被hronos工作组取代 http://en.wikipedia.org/wiki/OpenGL
OpenGL的发展 • 早期是由 ARB掌控其发展 – 成员包括SGI, Microsoft, Nvidia, HP, 3DLabs, IBM, …… – 相对稳定 2.1(2006.7)/3.3(2010.3)/4.4(2013.7) – 发展反映了新的硬件能力 • 3D纹理映射和纹理对象(1.2, 1998) • 顶点着色器、片段着色器(2.0, 2004) • 几何着色器(3.2, 2009) • Tessellator(4.1, 2011) • Compute Shader(4.3, 2012) • 通过扩展支持平台相关的特性 • 2006年,ARB被Khronos工作组取代 http://en.wikipedia.org/wiki/OpenGL 9
OpenGL的发展 中国斜草技术大学 University of Science and Technology of China 1992199419961998 2000 2002200420062008 →OpenGL3.0 0pngmerca NT3.5 1做GPU for PCs with single-chip →OpenGL2.1 (DEC) to PCs OpenGL 2.0 (GeForce) OpenGL ES for embedded devices Mesa 3 OpenGL 1.5 SGI Infinite. OpenGL 1.4 Reality →OpenGL1.3 OpenGL Utility Multitexture added (1.2.1) Toolkit(GLUT) released OpenGL 1.2 OpenGL 1.1 OpenGL 1.0 approved SIGGRAPHASIA2008
OpenGL的发展 10
现代OpenGL 中国斜学我术大学 University of Science and Technology of China ·利用GPU而不是CPU来获得性能提升 ·通过称为着色器(shader)的程序来控制 ·应用程序的工作就是把数据发送到GPU ·GPU执行所有的渲染任务 Vertices- Vertex Clipper and Fragment Rasterizer Pixels processor primitive assembler processor 11
现代OpenGL • 利用GPU而不是CPU来获得性能提升 • 通过称为着色器(shader)的程序来控制 • 应用程序的工作就是把数据发送到GPU • GPU执行所有的渲染任务 11