【笔记】计算机图形学基础(二)——OpenGL软件包概述

开放图形库OpenGL是图形硬件的一个软件接口,实现各种二维和三维的高级图形处理技术。OpenGL独立于硬件设备和窗口模式,在运行各种操作系统的计算机上都能使用,且图形函数定义独立于任何程序设计语言的一组规范,可移植性高。

一、OpenGL的主要功能

1、模型绘制。

能够绘制点、线、多边形,通过基本形状,可以构造出几乎所有的三维模型;还提供球、多面体、茶壶等复杂物体以及贝塞尔、NURBS等曲线曲面的绘制函数。

2、模型观察

建立三维景物模型后,可利用OpenGL描述如何观察所建立的三维模型,需要建立一系列变换,如坐标变换、投影变换和视窗变换等。

3、颜色模式

OpenGL提供两种颜色模式:RGBA模式和颜色索引模式。在RGBA模式中,颜色直接由RGB值指定。在颜色索引模式中,颜色由颜色表中的索引值指定。在三维物体着色时还可以选择平面着色和光滑着色等。

4、光照应用

三维模型加上光照才与客观物体更加相似,物体色彩的表现是光照与物体材质相互作用的结果。OpenGL提供了管理辐射光(Emitted Light)、环境光(Ambient Light)、漫反射光(Diffuse Light)和镜面光(Specular Light),以及指定模型表面的反射特性。

5、图像效果增强

OpenGL提供了一系列增强三维景观图像效果的函数,包括反走样、混合和雾化。反走样用于改善图像中线段图形的锯齿,使其更平滑。混合用于处理理想模型的半透明效果。雾化使图像从远处逐渐褪色,更具有真实感。

6、位图和图像处理

OpenGL提供一系列专门对位图和图像进行操作的函数,位图和图像数据用像素矩阵表示。

7、纹理映射

纹理映射函数可以将真实图像贴到景物的多边形上,从而绘制逼真的三维景观。

8、实时动画

OpenGL采用双缓存技术(Double Buffer),并提供一系列函数。

9、交互技术

用户可通过输入设备选择和修改三维景观中的物体。

二、OpenGL的绘制流程

OpenGL图形处理系统在计算机系统中的层次如图2-1,底层为图形硬件,往上为操作系统、窗口系统,OpenGL位于第四层,顶层为应用软件。
【笔记】计算机图形学基础(二)——OpenGL软件包概述

图2-1 OpenGL图形处理系统在计算机系统中的层次结构。
OpenGL的绘制流程如图2-2。应用软件调用OpenGL API函数进行绘制,OpenGL函数将绘制命令传送到命令缓冲区,命令缓冲区的几何顶点数据通常要进行几何变换、光照计算和投影,然后与其他数据一起送到光栅化流程中。光栅化根据图形的几何形状、颜色和纹理数据产生图像的帧缓存地址和像素点值,光栅化的结果存储在帧缓冲存储器中,图像就显示在屏幕上了。只有当命令缓冲区被清空时,缓冲区的命令和数据才会传递给流水线的下一阶段,OpenGL命令才会被执行。
【笔记】计算机图形学基础(二)——OpenGL软件包概述

图2-2 简化的OpenGL绘制流水线

三、OpenGL的基本语法

1、相关库

OpenGL主要有以下库可供使用:
①OpenGL核心库。“gl”为前缀,用于常规的核心的图形处理,如建立模型、产生光照等。
②OpenGL实用程序库。以“glu”为前缀,实现较为复杂的操作,如纹理映射、坐标变换、网格化等。
③OpenGL实用程序工具包。以“glut”为前缀,主要提供基于窗口的工具,如窗口系统初始化、多窗口管理等。
④OpenGL编程辅助库。以“aux”为前缀,主要用于窗口管理,输入/输出处理以及绘制简单的三维形体。
⑤Windows专用库。以“wgl”为前缀,用于连接OpenGL和Windows NT。
前三个库都是可以在任何OpenGL平台使用。

2、命名规则

OpenGL函数都遵循一个命名规则:
<库前缀><根命令><可选参数个数><可选参数类型>
如glColor3f,gl表示这个函数来自核心库gl.h,Color是跟命令,表示该函数用于颜色设定,3表示需要三个参数,f表示这三个参数应为浮点型。

3、数据类型

OpenGL具有平台无关性,因此它定义了自己的数据类型,这些数据类型可映射到不同语言的数据类型中。